c – 相互排斥的功能

c – 相互排斥的功能,第1张

概述我有两个函数foo和bar,它们应该相互排斥,因为它们在相同的数据上 *** 作.然而,foo从bar重复了很多代码,所以我想重构foo来调用bar. 这是一个问题,因为我不能使用一个互斥体的这两个功能,因为那时foo会死锁时调用吧.所以而不是“互斥”我只想“从不同的线程互斥”. 有没有实现这个模式?我正在使用C,如果我需要像shared_mutex这样的东西,我可以C 14 / boost. 定义一个私 我有两个函数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}
总结

以上是内存溢出为你收集整理的c – 相互排斥的功能全部内容,希望文章能够帮你解决c – 相互排斥的功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存