跨平台中對於 條件量 condition 的包裝

2021-06-18 23:40:59 字數 1106 閱讀 9016

說明:

條件量(condition)用於多執行緒同步,乙個條件量常常與乙個鎖(windows下是臨界區,linux下是pthread_mutex_t)同時使用

跨平台巨集(platform.hpp)的定義參見

另一篇博文

,當然擷取**實現時可以換成自己習慣的定義。跨平台中條件編譯的使用使得其實現**不是那麼容易閱讀,但是在使用這個包裝類的時候就比較容易閱讀了

與條件量配合使用的鎖型別 (跨平台**中用 condition::condition_lock_type 來使用),定義在另外兩篇博文中 spinlock 和 mutex

/**

* @file -

* @author jingqi

* @date 2010-07-09

*/#ifndef ___headfile___b926495d_967a_45a2_8f56_4ffb10f2e34b_

#define ___headfile___b926495d_967a_45a2_8f56_4ffb10f2e34b_

#include #if defined(nut_platform_os_windows) && !defined(nut_platform_cc_mingw)

# include # include "spinlock.hpp"

#else

# include #endif

#include "mutex.hpp"

namespace nut

~condition()

bool signal()

bool broadcast()

/*** release lock, wait for signal or interrupt, lock and wake

*/bool wait(condition_lock_type *mutex)

/*** work the same as above

*/bool timedwait(condition_lock_type *mutex, unsigned s, unsigned ms = 0)

};}#endif /* head file guarder */

跨平台中對於 訊號量 semaphore 的包裝

訊號量,常用於執行緒間同步。說明 跨平台巨集 platform.hpp 的定義參見 另一篇博文 當然擷取 實現時可以換成自己習慣的定義。跨平台中條件編譯的使用使得 不是那麼容易看,但是還好每個函式只有幾句話 file author jingqi date 2012 07 10 last edit 2...

跨平台中對於 自旋鎖 spinlock 的包裝

以下 在跨平台環境下包裝了使用者態自選鎖 spinlock 支援以下平台 作業系統linux windows,編譯器vc gcc mingw 說明 跨平台巨集 platform.hpp 的定義參見另一篇博文,當然擷取 實現時可以換成自己習慣的定義。跨平台中條件編譯的使用使得 不是那麼容易看,但是還好...

從平台中移植介面工作量評估

方案 3人 日 熟悉已有 羅列介面及其依賴 繪製介面實現流程圖 類圖 定義移植規則 介面說明 介面呼叫說明 移植 2人 日 根據所羅列的資訊 修改規則進行移植和修改。介面呼叫及測試 2.5人 日 校驗介面的可用性及在具體業務中的適用場景。案例中呼叫場景已經初步模擬,只需要熟悉場景及進行介面呼叫,根據...