簡單的C 執行緒類實現, windows平台

2021-06-28 23:34:18 字數 2185 閱讀 8919

thread.h

/*

windows平台執行緒類實現

開發環境: win7_x64 + vc2012

*/#ifndef __thread_h__

#define __thread_h__

#pragma once

#include #include /*

1. 執行緒基類, 要建立新的執行緒類, 只需要繼承此類並實現相關介面

2. 要開啟執行緒並執行只需要呼叫start()函式

3. 未完善地方: 應該寫個虛函式stop(), 當執行緒過程在執行時可以設定下執行標誌變數讓執行緒

退出迴圈過程, 再作些清理工作, 避免暴力終止執行緒。

*/class cthread // 抽象的執行緒基類

;#endif

thread.cpp:

#include #include #include "thread.h"

cthread::cthread(const std::string threadname)

: m_threadname(threadname), m_threadid(0), m_brun(false)

cthread::~cthread()

bool cthread::start(bool bsuspend/* = false*/) // 建立執行緒並執行(預設)或掛起

bool cthread::createthread(bool bsuspend/* = false*/) // 建立執行緒並執行(預設)或掛起

return m_brun;

}void cthread::join(int timeout/* = -1*/) // 等待超時時間(毫秒)為負時, 表示無限等待

}void cthread::resume() // 恢復掛起的執行緒

void cthread::suspend() // 掛起執行緒

bool cthread::terminate(unsigned long exitcode) // 結束執行緒

} return false;

}unsigned int cthread::getthreadid()

std::string cthread::getthreadname()

void cthread::setthreadname(std::string threadname)

unsigned int cthread::staticthreadfunc(void* arg) // 執行緒函式

thread1.h

#ifndef __thread1_h__

#define __thread1_h__

#pragma once

#include "thread.h"

/* 1. 要建立乙個新執行緒類時只需要繼承cthread, 然後在run()中實現自己的執行緒過程(run())

*/class cthread1: public cthread // 執行緒類1

;#endif

thread1.cpp

#include #include "thread1.h"

cthread1::cthread1(const std::string threadname): cthread(threadname)

cthread1::~cthread1()

bool cthread1::start(bool bsuspended/* = false*/)

void cthread1::run()

}

main.cpp

#define _crt_secure_no_warnings

#include #include "thread1.h"

#define n 15

int main(int argc, char* argv)

; cthread* t[n] = ;

for(int i = 0; i < n; i++)

for(int i = 0; i < n; i++)

t[i]->join();

return 0;

}

c 實現簡單的執行緒池

執行緒池,先建立一定數目的執行緒,初始都處於空閒狀態。當有新的任務進來,從執行緒池中取出乙個空閒的執行緒處理任務,處理完成之後,該執行緒被重新放回到執行緒池中。當執行緒池中的執行緒都在處理任務時,若有新的任務產生,只能等待,直到執行緒池中有執行緒結束任務空閒才能執行。用c 實現固定執行緒數的執行緒池...

c 實現簡單的執行緒池

c 執行緒池,繼承cdoit,實現其中的start和end 標頭檔案 多執行緒管理類 ifndef cthreadpoolmanage h define cthreadpoolmanage h include include include include include include inclu...

C 日期類簡單實現

剛剛開始學c 一般入門都會了解到日期類,對於日期類,我們首先是要了解。不過,如果我們能夠更加的了解它,對於後面我們學習其他類的話,會有乙個很大的幫助。現在在這兒,簡單實現一下日期類的一些介面 include using namespace std class date include date.h ...