繁体   English   中英

C ++中的Mutex在C ++之前11

[英]Mutex in C++ BEFORE C++11

问题很简单 - 在C ++ 11之前,什么是C ++中互斥体的简单,现成的解决方案? 我不需要任何花哨 - 只需要一些代码来等待另一个回调(可能随时发生)在执行之前完成。

我正在你的日常电脑上运行,i7和诸如此类的东西。 没有具体的性能要求(根本不是太慢),但必须完成停止一个过程的工作,让另一个完成然后恢复第一个过程。

提前致谢 !

Boost Synchronization肯定是一个有效的选择。

如果您不想使用Boost(基于您的问题,您可能会发现它满足您的需求),您可以围绕目标平台提供的API编写自己的c ++类包装器(即POSIX兼容平台的POSIX线程互斥 ,或Microsoft Windows OS上的Windows MutexCritical Sections )。

肯定有很多这样的包装类已经由其他人实现,即你可以尝试使用mutex关键字在GitHub上搜索并限制代码和C ++语言的结果这里有很多结果 )。

你不仅可以看到Boost,还可以看到POCO (它的Mutex类)或Qt (它的QMutex类)。

如果你只定位POSIX pthreads ,那么在你的标准互斥锁之上编写你自己的互斥锁类是可行的,而且已经做了很多次。

但是,切换到C ++ 11可能是2017年最好的方法。请注意, 最近的 GCCClang / LLVM支持许多(嵌入式或平板电脑/笔记本电脑/台式机/服务器)处理器。

(因此,可能值得付出努力 - 或金钱 - 以某种方式获得最近的GCC或Clang,可能是通过从源代码编译这些编译器,或付某人来完成这项工作)

您应该解释您要定位的计算机(处理器,操作系统,如果有,可用内存)。 即使POCO或Qt或Boost可以在C ++ 03模式下编译,它们也可能不适合微型嵌入式处理器(例如某些Arduino)。

在posix(大多数Unices)系统上使用pthreads。 在Windows上,最好的选择是CriticalSections。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM