UNIX环境高级编程学习之第十一章线程-用互斥锁传送安全线程参数 /* FileName: mutex.c Date: 20100310 Desc: gcc mutex.c -lpthread -o demo 用互斥锁传送安全线程参数, 删除加锁和解锁试试效果 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <pthread.h> pthread_mutex_t mutex; void* thread_fun(void* arg) { int n =*((int*)arg); //已经变量线程内部私有变量了 pthread_mutex_unlock(&mutex); // 解锁 printf("tid:%ul, arg=%d/n", pthread_self(), n); return (void*)1; } int main(int argc, char* argv[]) { pthread_mutex_init(&mutex, NULL); // 初始化互斥量 pthread_t tid[10]; int i, ret; for (i = 0;i < 10;i++) { pthread_mutex_lock(&mutex); // 加锁 ret = pthread_create(&tid[i], NULL, thread_fun, &i); // 这里暂时传送的一个整形变量, 也可以是Socket,这是安全的。 if (ret != 0) { printf("%d. pthread_create() Error/n", i); exit(-1); }else{ printf("%d. tid=%ul/n", i, tid[i]); } } sleep(1); pthread_mutex_destroy(&mutex); // 销毁互斥量 return 0; }