psu*_*lue 2 c++ mutex exception pthreads
[编辑:(从评论中复制)事实证明,问题出在其他地方,但谢谢大家的意见.]
我有一个共享容器类,它使用一个互斥锁来锁定push()和pop()函数,因为我不想同时修改head和tail.这是代码:
int Queue::push( WorkUnit unit )
{
pthread_mutex_lock( &_writeMutex );
int errorCode = 0;
try
{
_queue.push_back( unit );
}
catch( std::bad_alloc )
{
errorCode = 1;
}
pthread_mutex_unlock( &_writeMutex );
return errorCode;
}
Run Code Online (Sandbox Code Playgroud)
当我在调试模式下运行它时,一切都很好.当我在发布模式下运行时,我大致在驱动程序开始推送和"同时"弹出时崩溃.如果try/catch块捕获到std :: bad_alloc异常,它会立即强制退出吗?如果是这样,我应该将函数的其余部分包含在finally块中吗?
此外,较慢的调试模式是否可能成功,因为我的push()和pop()调用从未实际发生过?
在异常之后这实际上是爆炸吗?你的代码片段更有可能是你的同步不好.首先是互斥锁的名称:"writeMutex".如果还有"readMutex",这将不起作用.所有读取,查看和写入操作都需要由同一个互斥锁锁定.
| 归档时间: |
|
| 查看次数: |
5101 次 |
| 最近记录: |