如何在類的內部建立執行緒並安全退出

2021-10-07 20:44:23 字數 1302 閱讀 1801

注意兩個問題:

1、執行緒建立之後,很多人的寫法是直接乙個while死迴圈讓程式空轉,這樣效率低並且浪費資源;

2、當類析構的時候,一定要讓執行緒正常退出。

#pragma once

#include

#include

#include

#include

#include

using

namespace std;

class

cexitthread

;

#include

"exitthread.h"

cexitthread::

cexitthread()

cexitthread::

~cexitthread()

m_var_.

notify_one()

; m_bexit_ =

true

; m_futhread_.

get();

std::cout <<

"呼叫析構函式.\n";}

void cexitthread::

notify()

m_var_.

notify_one()

;}void cexitthread::

t_start()

//執行緒被通知之後,就會進入到while迴圈,一直迴圈

//以下兩句**測試用....

sleep

(1000);

std::cout <<

"...get notify.\n"

;//當該執行緒再次被通知,且m_bexit_為true時,才退出這個while迴圈//

if(m_bexit_)

break;}

std::cout <<

"exit thread.\n"

;}

#include

#include

#include

"exitthread.h"

#include

using

namespace std;

intmain()

執行結果如下圖所示:

當呼叫notify的時候,進入到執行緒內部,迴圈列印「…process」。

psensor跳出main函式作用域呼叫析構函式,退出執行緒。

C 如何在類中建立執行緒

一般我們在啟執行緒時,都是把執行緒函式寫成全域性函式來使用,但是如果要把執行緒操作寫成類,執行緒函式放在類裡面在c 編譯會不通過。在c 類中建立執行緒會有報錯 下面以乙個簡單的類進行舉例 external.件 ifndef radio external h define radio external...

如何在命名空間中用use引入類 方法,並建立別名

在php中,命名空間用來解決在編寫類庫或應用程式時建立可重用的 如類或函式時碰到的兩類問題 使用者編寫的 與php 內部的類 函式 常量或 第三方類 函式 常量之間的名字衝突。為很長的識別符號名稱 通常是為了緩解第一類問題而定義的 建立乙個別名 或簡短 的名稱,提高源 的可讀性。匯入classnam...

建立高效的執行緒安全類的步驟

建立高效的執行緒安全類的步驟 編寫執行緒安全類的最簡單的方法是用 synchronized 宣告每個方法。雖然這種方案可以消除資料損壞,但它同時也會消除您預期從多執行緒獲得的任何收益。這樣,您就需要分析並確保在 synchronized 塊內部僅占用最少的執行時間。您必須格外關注訪問緩慢資源 檔案 ...