用互斥锁传送安全线程参数

/*
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;
}
原文地址:https://www.cnblogs.com/toosuo/p/2196181.html