ubuntu下多线程程序运行出现:Assertion `mutex->__data.__owner == 0' failed异常

大雀儿飞飞 2011-11-04 12:59:11
如题,编写的是一个单生产者多消费者的多线程程序,用来拷贝数据,在gcc下编译运行。程序在拷贝小文件(1M左右)的时候运行正常,但是在拷贝大文件的时候就出现了以上异常,根据程序的运行我可以判断我的程序应该没有死锁情况发生,但是就是在拷贝进行到一段时间后出现异常:“main: pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed. 已放弃”,最后程序被终止,各位大侠知道这是什么原因引起的么?如何解决?(分不多,见谅!)
...全文
2022 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2011-11-04
  • 打赏
  • 举报
回复
肯定是加解锁有问题,线程自己加的锁记得自己解除,如果忘解或者让别的线程解,行为未定义.
dongjiawei316 2011-11-04
  • 打赏
  • 举报
回复
你的代码里有pthread_mutex_lock.c这个文件?你自己的源码吗?使用线程锁,一般不都是用linux提供的吗?
大雀儿飞飞 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq120848369 的回复:]

肯定是加解锁有问题,线程自己加的锁记得自己解除,如果忘解或者让别的线程解,行为未定义.
[/Quote]我又整理了一下程序中的锁,现在问题解决了。应该是锁的问题,但是也没有搞清楚是不是多次加同一个锁或是解了没有加锁的锁造成的.....但如你所说,肯定是锁的问题。

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧