簡體   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