10月 31
- --------------------------线程的创建---------------------------
- pthread_t mythread;
- //线程句柄声明,用来存放tid
- pthread_create( &mythread, NULL, thread_function, NULL)
- //创建新的线程
- //参数一:线程句柄,存放tid
- //参数二:线程函数返回值
- //参数三:线程函数,由thread_function函数指针定义
- //参数四:线程函数的参数
- pthread_join ( mythread, NULL )
- //等待mythread线程于主线程合并
- fflush(stdout);
- //清空标准输出缓冲区
- --------------------------线程的同步(互斥锁)---------------------------
- pthread_mutex_t mymutex=PTHREAD_MUTEX_INITIALIZER;
- //初始化mymutex互斥锁(使用宏的静态版本)
- pthread_mutex_t mymutex;
- pthread_mutex_init(&mymutex,NULL);
- //初始化mymutex互斥锁(动态版本)
- pthread_mutex_lock(&mymutex);
- //mymutex上锁,当得不到互斥锁时,进入等待队列,直到得到为止
- pthread_mutex_trylock(pthread_mutex_t *mutex)
- //mymutex上锁,当得不到互斥锁时,立刻返回EBUSY
- pthread_mutex_unlock(&mymutex);
- //mymutex解锁
- pthread_mutex_destroy(&mymutex)
- //释放mymutex指针指向的资源(释放mymutex指针指向的内存,并不指针本身)
- --------------------------线程的同步(等待)---------------------------
- pthread_cond_t mycond;
- //定义条件变量mycond
- pthread_cond_init(&mycond,NULL);
- //初始化条件变量mycond
- pthread_cond_destroy(&mycond);
- //释放mycond指针指向的资源
- pthread_cond_wait(&mycond, &mymutex){
- mymutex解锁;
- while(1){
- mycond休眠并等待被唤醒;
- if(mycond被唤醒)
- if(mymutex上锁成功)
- return 0;
- }
- }
- //等待mycond得到信号被唤醒
- pthread_cond_broadcast(&mycond);
- //对mycond广播唤醒信号
- pthread_cond_signal(&mycond);
- //对mycond单播唤醒信号(通常是下一个)