Thứ Hai, 13 tháng 12, 2010

Các ghi chú về kỹ thuật lập trình

1. Giá trị trả về của hàm system() sẽ tùy thuộc vào giá trị trả về của chương trình mà nó gọi
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 mutex
Block 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