今天让程序跑了一个多线程,发现线程运行后,报以下错误:
__pthread_tpp_change_priority: Assertion `new_prio == -1 || (new_prio >= fifo_min_prio && new_prio <= fifo_max_prio)’ failed.

定义如下:

pthread_mutex_t MsgMutex ;
pthread_t RecvthreadHandle_t;pthread_create(&RecvthreadHandle_t, NULL, receive\Data, NULL);
pthread_detach(RecvthreadHandle_t);

线程函数如下:

void receive\Data()
{pthread_mutex_lock(&MsgMutex);
//应用程序
pthread_mutex_unlock(&MsgMutex);
usleep(200 *1000);
}

发现问题原因:
没有对线程定义的变量MsgMutex 进行初始化

经研究发现解决方法如下:
方法一:

pthread_mutex_t MsgMutex = PTHREAD_MUTEX_INITIALIZER;

方法二:

pthread_mutex_t MsgMutex;
pthread_mutex_init(&MsgMutex , NULL);

附注:
1.、线程锁销毁的方法如下:

pthread_mutex_destroy(&MsgMutex)

2、阻塞方式对线程上锁方式如下:

pthread_mutex_lock(&MsgMutex);

3、非阻塞对线程上锁方式如下:

//没有获取到锁,则返回EBUSY
int err = pthread_mutex_trylock(&MsgMutex);
if(0 != err) {if(EBUSY == err) {//The mutex could not be acquired because it was already locked.}
}

3、阻塞超时的方式对线程上锁的方式如下:

struct timespec abs_timeout;
abs_timeout.tv_sec = time(NULL) + 1;
abs_timeout.tv_nsec = 0;//阻塞等待线程上锁1s,超时后返回错误码ETIMEDOUT
int err = pthread_mutex_timedlock(&MsgMutex, &abs_timeout);
if(0 != err) {if(ETIMEDOUT == err) {//The mutex could not be locked before the specified timeout expired.}
}

linux 多线程编程-互斥锁问题之tpp.c:63: __pthread_tpp_change_priority failed 问题解决相关推荐

  1. Linux多线程编程-互斥锁

    互斥锁 多线程编程中,(多线程编程)可以用互斥锁(也称互斥量)可以用来保护关键代码段,以确保其独占式的访问,这有点像二进制信号量.POSIX互斥锁相关函数主要有以下5个: #include <p ...

  2. 由 tpp.c:63: __pthread_tpp_change_priority failed 引发的思考

    早上在测试一个程序的时候,同事发现了我们的程序出现了 tpp.c:63: __pthread_tpp_change_priority failed的错误报告.当时同事查了这方面的资料,发现是线程互斥锁 ...

  3. Linux下多线程编程互斥锁和条件变量的简单使用

    Linux下的多线程遵循POSIX线程接口,称为pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a.线程是进程的一个实体,是CPU ...

  4. Multi_thread--Linux下多线程编程互斥锁和条件变量的简单使用

    Linux下的多线程遵循POSIX线程接口,称为pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a.线程是进程的一个实体,是CPU ...

  5. Linux C 多线程编程----互斥锁与条件变量-转

    转:http://blog.csdn.net/xing_hao/article/details/6626223 一.互斥锁 互斥量从本质上说就是一把锁, 提供对共享资源的保护访问. 1. 初始化: 在 ...

  6. Linux多线程同步——互斥锁

    互斥锁 当多个线程对同一个资源进行访问的时候,为了这个资源的安全性,我们需要对这个资源进行锁定,规定同一时间只有一个资源能够获得该锁的钥匙,其它线程要获得该资源需要等待该线程 互斥锁创建 pthrea ...

  7. android 线程互斥锁,多线程编程-互斥锁

    1.引言: 互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源.可以保证以下三点: 原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthread函数库)保证了如果 ...

  8. Linux多线程编程---线程间同步(互斥锁、条件变量、信号量和读写锁)

    本篇博文转自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了 ...

  9. ZT 为什么pthread_cond_t要和pthread_mutex_t同时使用 || pthread/Linux多线程编程

    为什么线程同步的时候pthread_cond_t要和pthread_mutex_t同时使用 (2009-10-27 11:07:23) 转载▼ 标签: 杂谈 分类: 计算机 举一个例子(http:// ...

  10. linux线程 ppt,Linux多线程编程多核编程.ppt

    <Linux多线程编程多核编程.ppt>由会员分享,可在线阅读,更多相关<Linux多线程编程多核编程.ppt(28页珍藏版)>请在装配图网上搜索. 1.Linux多线程编程, ...

最新文章

  1. 在两幅图像之间获得正确(最小二乘意义)仿射变换参数affine points via least square method
  2. 解决element-ui表头错位的问题
  3. 浏览器插件 火狐插件
  4. 自欺欺人的使用 NSTimer 销毁
  5. 饿了么超时20分钟_饿了么:5分钟;美团:8分钟......消费者:???
  6. 数据分析之Pandas VS SQL!
  7. PHP仿百度实现弹窗登录效果,js仿百度登录页实现拖动窗口效果
  8. 协方差矩阵经线性变化可以变成不相关的
  9. VueRouter安装使用教程
  10. 跟锦数学200217 厦门大学2019年数学分析考研试题4 (解答见跟锦数学微信公众账号)...
  11. OpenXML:C#操作PPT文档
  12. 一部区块链创业者的“燃点” | 《8问》
  13. 代码统计工具实测点评
  14. Omar Loves Candies
  15. 开发会自测为什么测试还会单独存在?软件测试八大误区
  16. 基于汇编语言实现的贪吃蛇游戏设计
  17. Ubuntu系统拼音无法正确打字怎么解决?
  18. LeetCode 41-50题
  19. 洛谷P1603 斯诺登的密码 题解
  20. 精准引流客源的方法 129种引流方法全方位操作

热门文章

  1. CentOS7-命令-查看操作历史记录(history)
  2. 【中移芯昇】3. uart读写
  3. App推广要做哪些事?渠道、方案、人脉......
  4. Android app 启动优化
  5. 微型计算机主板常用部件,简明微型计算机组装与维护教程
  6. nginx 正反代理(超级玛丽小游戏)
  7. 电子计算机用户网络新词秀,网络新词的研究
  8. RAR压缩包密码如何解密
  9. php实时股票,PHP实现股票趋势图和柱形图
  10. DataSourceClosedException: dataSource already closed