zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    动态内存有那几个?
    Swift的可选的和可选链
    结构的声明
    指针的理解
    类的初始化分析要点代码
    Swift属性的理解和代码
    swift基本类型
    Swift的下标代码
    Swift枚举代码
    mysql 修改编码格式
  • 原文地址:https://www.cnblogs.com/kwinwei/p/13187114.html
Copyright © 2011-2022 走看看