`
dazhilao
  • 浏览: 246040 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】‘PTHREAD_MUTEX_RECURSIVE’未声明的解决方法

阅读更多
原文地址:http://blog.csdn.net/alextanghao/archive/2009/03/06/3963810.aspx
但是用gcc 就出现 ‘PTHREAD_MUTEX_RECURSIVE’未声明(在此函数内第一次使用) 这样的提示,pthread.h已经包含了,问题出在编译参数上面。

g++ recursion.c -orecursion -lpthread

gcc recursion.c -orecursion -lpthread -D_GNU_SOURCE


gcc 多了一个 -D_GNU_SOURCE 选项

** 对于Linux下的信号量/读写锁文件进行编译,需要在编译选项中指明-D_GNU_SOURCE

gcc -D_GNU_SOURCE hello.c
means the compiler will use the GNU standard of compilation, the superset of all
other standards under GNU C libraries.

分享到:
评论

相关推荐

    pthread经典用法

    Mutex有三种类型:“fast”,“recursive”和“error checking”。快速Mutex(fast)在自锁时挂起当前线程;递归Mutex允许同一线程多次加锁,每次解锁减少计数;错误检查Mutex在自锁时立即返回错误EDEADLK。 四、...

    Linux互斥锁、条件变量和信号量[归类].pdf

    2. 递归型(PTHREAD_MUTEX_RECURSIVE_NP):如果一个线程已经锁定了互斥量,再次调用锁定操作时,系统会知道该操作来自同一线程,于是同意线程锁定互斥量。 3. 错误检测型(PTHREAD_MUTEX_ERRORCHECK_NP):如果互斥...

    pthread和win32的临界区 Critical Section 比较

    而pthread的互斥锁提供了递归锁定功能(`PTHREAD_MUTEX_RECURSIVE`),允许同一线程多次锁定,只要保证解锁次数与锁定次数相等,就可以防止死锁。 总结来说,pthread和Win32的临界区(互斥锁)在实现线程同步时各有...

    Linux的多线程编程的高效开发经验

    为了解决这个问题,开发者需要在初始化互斥锁时显式设置`PTHREAD_MUTEX_RECURSIVE`属性,使得同一线程可以递归加锁和解锁。 以下是五个提高Linux多线程编程效率的经验: 1. 初始化互斥锁时设置`recursive`属性:...

    linux的多线程编程的高效开发经验.pdf

    为了避免这种情况,可以使用`pthread_mutexattr_settype`函数设置互斥锁属性为`PTHREAD_MUTEX_RECURSIVE`,这样同一线程可以多次加锁并相应地解锁,防止死锁。 3. **正确使用条件变量** 条件变量常用于线程间的...

    linux多线程编程指南

    pthread_setschedparam(pthread_self(), SCHED_FIFO, &param); ``` - **获取线程的优先级:** - 使用`pthread_getschedparam()`函数获取线程的优先级。 - 示例代码: ```c struct sched_param param; ...

    linux的多线程编程的高效开发经验[归类].pdf

    例如,可以使用`pthread_mutex_timedlock`代替`pthread_mutex_lock`来设定等待的最长时间,超过这个时间仍未获得锁,则返回错误,线程可以采取其他策略。 5. 理解线程局部存储(TLS) 线程局部存储允许每个线程拥有...

    Unix环境高级编程——线程控制PPT

    有三种类型:`PTHREAD_MUTEX_NORMAL`(标准,无特殊检查)、`PTHREAD_MUTEX_ERRORCHECK`(错误检查)、`PTHREAD_MUTEX_RECURSIVE`(递归,允许同一线程多次加锁)和`PTHREAD_MUTEX_DEFAULT`(默认类型)。...

    openssl-1.1.1g编译、交叉编译方式.rar

    linux下编译/交叉编译openssl-1.1.1g生成动态库和静态库方法: 一、编译linux版本 1. cp openssl-1.1.1g.tar.gz /opt/ 2. tar -zxvf openssl-1.1.1g.tar.gz 3. mkdir build 4. ./config --prefix=/opt/openssl-1.1.1...

    linux的多线程编程的高效开发经验借鉴.pdf

    但在某些情况下,递归锁是必要的,可以使用`pthread_mutexattr_settype`函数设置互斥锁属性为`PTHREAD_MUTEX_RECURSIVE`,允许同一线程多次加锁。 3. **正确使用线程局部存储(TLS)**: 线程局部存储是一种数据...

    高效linux的多线程编程经验12条总结

    - **解决方案**:可以通过设置互斥锁的`PTHREAD_MUTEX_RECURSIVE`属性来允许递归加锁,避免因误操作导致的死锁问题。示例代码如下: ```c // 创建一个递归互斥锁 pthread_mutexattr_t attr; pthread_mutexattr...

    Linux 实时信号程序中锁的探索

    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); pthread_mutex_init(&lock, &attr); ``` 2. **避免持有锁时调用阻塞操作**:在信号处理函数中,如果已经持有了锁,应避免调用可能阻塞的操作,因为...

    Linux多线程编程的高效开发经验.

    在创建互斥锁时,可以使用`pthread_mutexattr_settype`函数来设定属性,将类型设为`PTHREAD_MUTEX_RECURSIVE`,允许同一线程多次加锁。这样可以处理那些需要在同一线程内重复调用加锁操作的复杂情况。 其次,条件...

    Linux多线程锁属性设置方法

    例如,如果你的应用场景中存在同一线程可能需要多次锁定同一个资源的情况,使用`PTHREAD_MUTEX_RECURSIVE`可以避免死锁,因为它允许线程安全地进行递归锁定。而`PTHREAD_MUTEX_ERRORCHECK`则可以提供错误检查,帮助...

    线程同步分析

    在Windows中,Mutex是可递归的,即一个线程可以多次获得同一Mutex,而在Linux下,默认的pthread_mutex_t是不可递归的,若需递归,需要显式设置PTHREAD_MUTEX_RECURSIVE属性。误用非递归锁可能导致死锁,例如在一个...

    Linux 的多线程编程的高效开发经验

    `之后添加`pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);`,以确保同一线程可以安全地多次锁定同一资源。 #### 经验二:理解线程调度策略 Linux的线程调度策略直接影响到程序的执行效率和响应时间...

    SFLockDemo:自己模拟实现自旋锁,互斥锁,递归锁,条件锁

    本项目"SFLockDemo"正是一个实践性的教程,帮助开发者模拟实现自旋锁(Spin Lock)、互斥锁(Mutex Lock)、递归锁(Recursive Lock)以及条件锁(Condition Lock)。下面将详细介绍这四种锁的工作原理和应用场景。 ...

    vxworks_kernel_programmers_guide_6.9

    PART I: CORE TECHNOLOGIES 1 Overview ...................................................................................................... 3 1.1 Introduction ............................................

Global site tag (gtag.js) - Google Analytics