Linux操作系统下的多线程编程详细解析
时间:2007-06-07 03:07:58 来源:站长资讯收集整理 作者:佚名
| /* example.c*/ #include #include void thread(void) { int i; for(i=0;i<3;i++) printf("This is a pthread.n"); } int main(void) { pthread_t id; int i,ret; ret=pthread_create(&id,NULL,(void *) thread,NULL); if(ret!=0){ printf ("Create pthread error!n"); exit (1); } for(i=0;i<3;i++) printf("This is the main process.n"); pthread_join(id,NULL); return (0); } |
我们编译此程序:
| gcc example1.c -lpthread -o example1 |
运行example1,我们得到如下结果:
| This is the main process. This is a pthread. This is the main process. This is the main process. This is a pthread. This is a pthread. |
再次运行,我们可能得到如下结果:
| This is a pthread. This is the main process. This is a pthread. This is the main process. This is a pthread. This is the main process. |
前后两次结果不一样,这是两个线程争夺CPU资源的结果。上面的示例中,我们使用到了两个函数,pthread_create和pthread_join,并声明了一个pthread_t型的变量。
pthread_t在头文件/usr/include/bits/pthreadtypes.h中定义:
typedef unsigned long int pthread_t;
它是一个线程的标识符。函数pthread_create用来创建一个线程,它的原型为:
| extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr,void *(*__start_routine) (void *), void *__arg)); |


















文章评论
共有 位CH网友发表了评论 查看完整内容