zoukankan      html  css  js  c++  java
  • 用互斥锁传送安全线程参数

    /*
    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;
    }
  • 相关阅读:
    SQL Server 幻读 的真实案例
    CSS hack 360浏览器 极速模式与兼容模式
    CS程序中XML编码Encode和解码Decode
    webbrowser 响应关闭事件
    asp.net Checkbox 绑定自定义属性
    企业库实现AOP的几种方法
    c# 自定义log4net过滤器
    SQL Server 并发死锁解决案例备忘
    c# 复制文件夹
    访问 iframe 内部控件方法
  • 原文地址:https://www.cnblogs.com/toosuo/p/2196181.html
Copyright © 2011-2022 走看看