利用osapi庫處理執行緒

2021-07-15 02:47:51 字數 945 閱讀 9644

引言

c++繼承要寫上

「訪問標號+ 類名」

private, public, protected 訪問標號的訪問範圍

private:只能由1.該類中的函式、2.其友元函式訪問。

不能被任何其他訪問,該類的物件也不能訪問。

protected:可以被1.該類中的函式、2.子類的函式、3.其友元函式訪問。

但不能被該類的物件訪問。

public:可以被1.該類中的函式、2.子類的函式、3.其友元函式訪問,也可以由4.該類的物件訪問。

注:友元函式包括3種:設為友元的普通的非成員函式;設為友元的其他類的成員函式;設為友元類中的所有成員函式。

正題:

主要使用osapi裡面的qthread類

構造乙個類繼承qthread,重寫routine函式

在呼叫時用run()函式

注意程序的**

設定乙個識別符號通知程序退出,再用另個執行緒**資源qthread::join(*);

擴充套件:互斥鎖(用以解決多個執行緒占用同一塊記憶體問題)

首先建立全域性變數或者堆物件

os_mutex g_mutex;

使用完畢後釋放鎖 g_mutex.unlock();

當執行緒所需時間較長的處理方式:先將使用的同一記憶體複製處理,再用互斥鎖直接替換要處理的內容

訊號量

當多個執行緒同時作用的時候,利用訊號量的機制,可以有效的減少cpu的消耗,當執行緒在等待訊號量的時候,不佔cpu,處於被阻塞的狀態

建立乙個訊號量

os_semaphore g_sem;

用以生成資料的在生成完成後g_sem.post();

消費者接收時g_sem.wait();

wait()可以加時間  int ret = g_sem.wait(1000);

超時處理:  if(!ret) ..........

利用ACE管理執行緒

我所接觸的ace中對執行緒操作的類主要有兩個,乙個是ace thread,另乙個為ace thread manager ace thread能夠管理所有執行緒,只要你掌握有需要被管理的執行緒的id ace thread manager的乙個物件能夠管理該物件所建立的執行緒。建立乙個執行緒的函式有 通...

利用CPU多核處理

在mysql5.5.x後,可以利用innodb read io threads和innodb write io threads,取代之前的innodb file io threads引數,在linux平台上就可以根據cpu核數來更改相應的引數值,預設是4.比如cpu是2棵8核的,可以設定 innod...

利用Excel VBA處理文件

遇到如下格式的一篇word文件,格式混亂,不適合列印 由於沒有接觸過word vba,因此決定用excel vba來處理這篇文件。首先全選該文件的內容,貼上到excel文件中。然後建立乙個新的macro,修改該macro為以下 sub formatsheet formatsheet macro ma...