Ví dụ:
Bạn có đoạn code như sau (test.c): gcc test.c -o test
1: #include <stdio.h>
2:
3: int main()
4: {
5: printf("Test is running\n");
6: return 0;
7: }
8:
Trong trường hợp này giá trị trả về của hàm system("./test") sẽ là 0.Nhưng nếu ở dòng 6 của đoạn code trên, bạn return 1 thì chuyện gì sẽ xảy ra... Giá trị trả về của hàm system("./test") khi đó sẽ là 256
Tương tự
2 -> 512
3 -> 768
...
2. Ghi chú về pthread_exit()
Với đoạn code bên dưới thì World sẽ không bao giờ Hi hoặc Bye. Đơn giản thôi, bởi vì sau khi gọi hàm pthread_exit(), calling thread sẽ lập tức "đi bán muối" :)
gcc -lpthread hello.c -o hello
1: #include <pthread.h>
2: #include <stdio.h>
3: #include <stdlib.h>
4: #define NUM_THREADS 5
5:
6: void *PrintHello(void *threadid)
7: {
8: long tid;
9: tid = (long)threadid;
10: printf("Hello World! It's me, thread #%ld!\n", tid);
11: pthread_exit(NULL);
12: printf("World: Hi!\n");
13: }
14:
15: int main(int argc, char *argv[])
16: {
17: pthread_t threads[NUM_THREADS];
18: int rc;
19: long t;
20: for(t=0;t<NUM_THREADS;t++){
21: printf("In main: creating thread %ld\n", t);
22: rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
23: if (rc){
24: printf("ERROR; return code from pthread_create() is %d\n", rc);
25: exit(-1);
26: }
27: }
28: pthread_exit(NULL);
29: printf("World: Bye!\n");
30: }
3. Hàm pthread_cond_wait() và pthread_cond_timedwait()
1: int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
2: int pthread_cond_timedwait(pthread_cond_t *cond,
3: pthread_mutex_t *mutex, const struct timespec *abstime);
Release mutexBlock tiếng trình gọi bằng biến điều kiện 'cond'
http://man.yolinux.com/cgi-bin/man2html?cgi_command=pthread_cond_wait
Không có nhận xét nào:
Đăng nhận xét