Linux企業級開發技術(7)——libevent企業級開發之鎖和執行緒

尹成發表於2014-09-23

 

編寫多執行緒程式的時候,在多個執行緒中同時訪問同樣的資料並不總是安全的。

libevent的結構體在多執行緒下通常有三種工作方式:

1、某些結構體內在地是單執行緒的:同時在多個執行緒中使用它們總是不安全的。

2、某些結構體具有可選的鎖:可以告知libevent是否需要在多個執行緒中使用每個物件。

3、某些結構體總是鎖定的:如果libevent在支援鎖的配置下執行,在多個執行緒中使用它們總是安全的。

為獲取鎖,在呼叫分配需要在多個執行緒間共享的結構體的libevent函式之前,必須告知libevent使用哪個鎖函式。

如果使用pthreads庫,或者使用Windows本地執行緒程式碼,那麼你是幸運的:已經有設定libevent使用正確的pthreads或者Windows函式的預定義函式。

 

 

介面:

 

int evthread_use_pthreads(void);

函式在成功時返回0,失敗時返回-1。

如果使用不同的執行緒庫,則需要一些額外的工作,必須使用你的執行緒庫來定義函式去實現:

相關文章