首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理pthread_mutex_unlock()错误?

如何处理pthread_mutex_unlock()错误?
EN

Stack Overflow用户
提问于 2016-07-09 15:49:51
回答 1查看 1.9K关注 0票数 4

我正在开发一个线程安全类,它也处理错误。我想知道如何处理来自函数pthread_mutex_unlock()的可能错误。如果我扔了互斥锁的话?我应该再次解锁它还是销毁类对象?

代码语言:javascript
复制
int SomeClass::function() {   
    int res = pthread_mutex_lock(&_mutex);
    if(res < 0)
        throw std::runtime_error("lock failed: " + std::string(std::strerror(res)));
    // some code
    res = pthread_mutex_unlock(&_mutex);
    if(res < 0)
        throw std::runtime_error("unlock failed: " + std::string(std::strerror(res)));
    return something;
}

谢谢!

编辑:

可变_mutex是仅使用pthread_mutex_init(&_mutex, NULL)在构造函数内初始化的受保护类成员(非静态)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-09 18:29:43

当pthread_mutex_unlock被解锁不是有效的互斥或互斥对象不属于线程时,绝对是失败的唯一情况。因此,如果这两种情况都没有发生,那么您不应该担心,而且这两种情况都是应用程序错误--此时您可以抛出一个异常,而不必担心互斥状态,您有一个更大的问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38283569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档