c – 相互排斥的功能
发布时间:2020-12-16 03:05:20 所属栏目:百科 来源:网络整理
导读:我有两个函数foo和bar,它们应该相互排斥,因为它们在相同的数据上操作.然而,foo从bar重复了很多代码,所以我想重构foo来调用bar. 这是一个问题,因为我不能使用一个互斥体的这两个功能,因为那时foo会死锁时调用吧.所以而不是“互斥”我只想“从不同的线程互斥”
我有两个函数foo和bar,它们应该相互排斥,因为它们在相同的数据上操作.然而,foo从bar重复了很多代码,所以我想重构foo来调用bar.
这是一个问题,因为我不能使用一个互斥体的这两个功能,因为那时foo会死锁时调用吧.所以而不是“互斥”我只想“从不同的线程互斥”. 有没有实现这个模式?我正在使用C,如果我需要像shared_mutex这样的东西,我可以C 14 / boost. 解决方法
定义一个私有的“解锁”功能,并使用foo和bar:
void bar_unlocked() { // assert that mx_ is locked // real work } void bar() { std::lock_guard<std::mutex> lock(mx_); bar_unlocked(); } void foo() { std::lock_guard<std::mutex> lock(mx_); // stuff bar_unlocked(); // more stuff } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |