• Linux下怎样模拟Windows的临界区(CRITICAL_SECTION)


    网上很多文章讲这个问题,但大多都仅仅是说用Linux下的mutex替代Windows下的CRITICAL_SECTION:pthread_mutex_lock​、pthread_mutex_unlock。再说的多一些的,无非是用类的构造和析构函数来封装一下。

    这里忽略了一个很重要的细节,Windows下的Mutex和​CRITICAL_SECTION,都是递归锁,而Linux下的pthread_mutex,默认是非递归锁。区别体现在,同一个线程,递归锁可以重入而不阻塞;非递归锁则会阻塞同一个线程的第二次加锁行为(再第一次释放锁之前)。

    因此,要在Linux下实现可递归的​临界区,这么做:

    pthread_mutexattr_t attr;

    pthread_mutexattr_init(&attr);

    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);

    pthread_mutex_init(&mutex,&attr);

    转载于:http://blog.sina.com.cn/s/blog_484102dd0102w05p.html

  • 相关阅读:
    【转】awk内置变量
    【转】awk数组操作
    【转】awk 数组用法【精华贴】
    【转】linux shell 逻辑运算符、逻辑表达式
    指挥作战
    人脸相关
    TD
    后台
    前台 html 空格
    linux
  • 原文地址:https://www.cnblogs.com/kwinwei/p/13187114.html
Copyright © 2020-2023  润新知