`
chenqi210
  • 浏览: 78921 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

pthread_rwlock_t 未定义的问题

    博客分类:
  • c
  • c++
 
阅读更多

最近在linux上次编译时出现pthread_rwlock_t没有定义的现象.但是已经include了pthread.h,网上查了一些资料后发现,原因竟然是因为显示使用了-std=c99参数导致.

 

在c99没有完全实现时,如果不显示指定-std, 则gcc默认使用gnu89(或gnu90)标准.

一般而言,

               gnuXX标准 = cXX标准 + GNU extension

 

而pthread_rwlock_t正好就是GNU extension的一部分. 所以指定使用c99就会把GNU extension禁用,造成pthread_rwlock_t未定义的问题.

 

解决方法就是:

方法一: 把-std=c99去掉,

方法二: 或者改成-std=gnu89, -std=gnu90, -std=gnu99 这类

 

 

 

          

分享到:
评论

相关推荐

    Windows可使用的pthread库

    2. **线程同步**:pthread库提供了多种同步机制,包括互斥锁(`pthread_mutex_t`)、条件变量(`pthread_cond_t`)、信号量(`pthread_semaphore_t`)和读写锁(`pthread_rwlock_t`)。这些同步原语有助于防止数据...

    pthread_cond_wait() 用法深入分析

    pthread_cond_t cond = PTHREAD_COND_INITIALIZER; ``` 动态创建则通过 `pthread_cond_init()` 函数完成,但通常不提供属性(cond_attr),因为它在 LinuxThreads 中未被实现: ```c pthread_cond_init(&cond, NULL)...

    Pthread 多线程C++动态库+静态库+头文件

    6. `pthread_rwlock_t`:读写锁,允许多个读取者同时访问,但在写入时会独占资源。 描述中提到"Pthread在Visual Studio中可用,MFC也可用",这意味着开发人员可以在使用MFC构建的C++应用程序中无缝地集成Pthread库...

    pthread_testcancel pthread_kill pthread_cancel

    pthread_testcancel pthread_kill pthread_cancel 的使用例子

    pthreads_pthread_

    6. `pthread_rwlock_t` 和 `pthread_rwlock_init() / pthread_rwlock_rdlock() / pthread_rwlock_wrlock() / pthread_rwlock_unlock() / pthread_rwlock_destroy()`:读写锁,允许多个读取者同时访问,但写入者独占...

    2_pthread_sync.tgz

    `pthread_rwlock_t`是POSIX线程库中的读写锁类型,有`pthread_rwlock_init`、`pthread_rwlock_rdlock`(读锁)、`pthread_rwlock_wrlock`(写锁)和`pthread_rwlock_unlock`等函数。读写锁提高了对共享数据的并发...

    为什么在pthread_cond_wait()前要加一个while循环来判断条件是否为假呢?.Linux 多线程

    4. **线程同步问题**:如果在`pthread_cond_signal()`发出信号后,`pthread_cond_wait()`立即执行,那么`pthread_cond_wait()`可能会错过信号,导致线程持续等待。因此,确保在检查条件变量和调用`pthread_cond_wait...

    Posix(1).rar_POSIX Pthread_posix_pthread_pthread posix

    4. **同步机制**:pthreads提供多种同步原语,包括互斥锁(`pthread_mutex_t`)、条件变量(`pthread_cond_t`)、读写锁(`pthread_rwlock_t`)和信号量(`sem_t`),用于控制对共享资源的访问。 5. **线程调度**:...

    信号pthread_cond_wait

    《深入理解pthread_cond_wait:多线程同步的关键》 在多线程编程中,线程间的同步至关重要,而`pthread_cond_wait`就是一种用于线程间同步的重要工具,它属于POSIX线程库(pthread)的一部分。这个函数使得一个线程...

    编译时报 Looking for pthread_create - not found 的解决办法

    编译时报 Looking for pthread_create - not found 的解决办法 linux gcc 编译时报Looking for pthread_create - not found 其解决办法是...

    pthread_mutex

    `1_pthread_mutex.tgz`、`1_pthread_mutex`、`1_pthread_deadlock`和`1_pthread_basic`这些文件名可能包含了一些示例代码,比如展示了如何初始化、锁定、解锁互斥锁,以及如何处理可能出现的死锁问题。死锁是指两个...

    Linux系统编程之线程同步

    int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr); 参2:attr表读写锁属性,通常使用默认属性,传NULL即可。 pthread_rwlock_destroy函数 销毁一把读写锁...

    [并发并行]_[线程同步]_[pthread_once 实现单例模式分析]

    在这个例子中,`once_control` 是一个 `pthread_once_t` 类型的变量,被初始化为 `PTHREAD_ONCE_INIT`。`init_function` 是指向初始化函数的指针。`pthread_once` 函数会检查 `once_control` 的状态,如果尚未执行过...

    pthread库文档

    3. 读写锁(`pthread_rwlock_t`): 提供了读写权限的控制,允许多个读取者同时访问,但写入者独占。`pthread_rwlock_init()`和`pthread_rwlock_destroy()`初始化和销毁读写锁,`pthread_rwlock_rdlock()`和`pthread_...

    Pthread-Primer.rar_pthread_unix primer

    3. 读写锁(Read-Write Locks):`pthread_rwlock_t`,允许多个读线程同时访问资源,但写线程具有独占性。 4. 原子操作(Atomic Operations):提供无锁编程接口,避免竞态条件。 五、线程通信 线程间可以通过信号...

    同步 读写锁 readwriteLock

    int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr); ``` 如果初始化成功,函数返回0;失败则返回非零错误码。可能的错误码包括: - `EAGAIN`:系统...

    pthread-primer.rar_Pthread Primer pdf_pthread_pthread primer

    例如,`pthread_create()`用于创建新的线程,`pthread_join()`用于等待线程结束,`pthread_mutex_t`和`pthread_mutex_lock()`、`pthread_mutex_unlock()`用于互斥锁,保证资源的安全访问,`pthread_cond_t`和`...

    pthread_self获取当前调用线程的识别码

    3. **调试**:在调试多线程程序时,可以打印出 `pthread_self` 的值来跟踪和识别不同线程的行为,这对于定位和解决问题非常有帮助。 4. **条件变量**:在使用 `pthread_cond_wait` 和 `pthread_cond_signal` 等条件...

    pthread库文档_急速版

    - 读写锁(rwlock):pthread_rwlock_init()、pthread_rwlock_rdlock()、pthread_rwlock_wrlock()、pthread_rwlock_unlock()用于多读者单写者场景。 5. **信号量(semaphore)**:pthread库提供了基于计数的二进制...

Global site tag (gtag.js) - Google Analytics