C 用類封裝 pthread

2021-06-28 20:45:44 字數 1483 閱讀 8091

乙個專案中需要用到pthread,發現把它封裝到類中使用起來更加的方便。

這裡儲存了例項**,以備以後使用。

標頭檔案中定義了threadbase類,它包含了執行緒基本的一些介面,start()  join() 和quit()

run()為介面函式,使派生類可以實現自己的工作函式。

thread_base.h

#ifndef _thread_base_h_

#define _thread_base_h_

#include #include #include using namespace std;

class threadbase

;#endif

thread_base.cpp, 在析構函式中會通過thread_kill向執行緒傳送訊號,終止正在執行的執行緒。

這裡並沒有採用pthread_cancle的方式。

#include "thread_base.h"

void* threadbase::start_func(void* arg)

int threadbase::start()

cout << "start a new thread success! tid="<< m_tid << endl;

m_isalive = true;

return 0;

}int threadbase::join()

;void threadtest1::run()

}class threadtest2 : public threadbase

;void threadtest2::run()

}class threadtest3 : public threadbase

;void threadtest3::run()

}int main()

make file

cc = g++

rm = rm

cflags = -o2 -lpthread

objsdir = .objs

#vpath = .

objs = thread_base.o test.o

target = test

$(objsdir):

mkdir -p ./$@

$(target):$(objsdir) $(objs)

$(cc) -o $(target) $(objsdir)/*.o $(cflags)

$(objs): %.o:%.cpp

$(cc) -c $(cflags) $< -o $(objsdir)/$@

clean:

-$(rm) $(target)

-$(rm) $(objsdir)/*.o

當然如果需要還可以在基類中新增更多的功能,比如給執行緒設定乙個邏輯的名字,新增執行緒對應的佇列(類似 tls)等方式。

用socket封裝ftp類。

最近本人寫了乙個ftp類,想和大家分享一下。ftp協議的底層實現是用socket來實現的。上圖是ftp協議的官方協議圖 可以看出它主要是由兩個socket組成的。1,控制連線,主要是用於傳送控制命令 ftp協議的建立流程 首先,客戶端建立乙個套接字1,套接字繫結的ip和埠為ftp伺服器的ip和著名埠...

C 用類的形式封裝動態順序表

在前面已經用c語言實現過了 今天用另一種語言c 以類的形式來實現一下 順序表是在計算機記憶體中以陣列的形式儲存的線性表,線性表的順序儲存是指用一組位址連續的儲存單元依次儲存線性表中的各個元素 使得線性表中在邏輯結構上相鄰的資料元素儲存在相鄰的物理儲存單元中,即通過資料元素物理儲存的相鄰關係來反映資料...

C 類的封裝

1 private,public,protected的訪問範圍 private 只能由該類中的函式 其友元函式訪問,不能被任何其他訪問,該類的物件也不能訪問.protected 可以被該類中的函式 子類的函式 以及其友元函式訪問,但不能被該類的物件訪問 public 可以被該類中的函式 子類的函式 ...