Linux網路程式設計之多執行緒

2021-06-28 21:56:41 字數 1644 閱讀 6168

多執行緒模型

在多執行緒模型下,注意共享資料的同步,mutex/condition_variable/rw_lock等的使用,local thread storage的使用,另外,可以搭配執行緒池處理非同步計算任務。在c++11中的執行緒庫中已經提供了future相關的工具,合理地使用執行緒模型減少資源的同時,能獲得不錯的效能

//thread server

#include #include #include #include #include #include #define max_read_chunk 2*1024*1024

#define keep_alive 0

void run();

int main(int argc, char *argv)

void error_exit()

int do_read_and_write(int clientfd)

//write back

result = send(clientfd, read, result, 0);

if (result<=0)

if(!keep_alive)

close(clientfd);

return 0;

}void *handle_client_socket(void *clientfd)

int client = *(int *)clientfd;

if (clientfd!=null)

if (do_read_and_write(client)<0)

//we set the thread detach,so no need call pthread_exit

//pthread_exit(null);

}void run()

struct sockaddr_in sin;

sin.sin_family = af_inet;

sin.sin_addr = *(struct in_addr*)h->h_addr;

sin.sin_port = htons(8000);

int serverfd = socket(af_inet, sock_stream, 0);

if (serverfd<0)

int reuse = 1;

if (setsockopt(serverfd, sol_socket, so_reuseaddr, &reuse, sizeof(reuse)))

socklen_t slen = sizeof(sin);

if (bind(serverfd, (struct sockaddr *)&sin, slen)<0)

if (listen(serverfd, 20)<0)

struct sockaddr_in client;

socklen_t slen_client = sizeof(client);

int clientfd;

pthread_t pt;

while(1)

int *temp = (int *) malloc(sizeof(int));

*temp = clientfd;

if(pthread_create(&pt, null, handle_client_socket, temp)!=0)

}}

Python多執行緒程式設計之多執行緒加鎖

python語言本身是支援多執行緒的,不像php語言。下面的例子是多個執行緒做同一批任務,任務總是有task num個,每次執行緒做乙個任務 print 做完後繼續取任務,直到所有任務完成為止。1 coding utf 8 2import threading 34 start task 0 5 ta...

python併發程式設計之多執行緒

程序包含了執行該程式所需要所有資源 程序是乙個資源單位 執行緒是cpu的最小執行單位 每乙個程序一旦被建立 就預設開啟了一條執行緒 稱之為主線程 使用執行緒可以提高程式效率 為何不用多程序提高效率 是因為程序對作業系統的資源耗費非常高 執行緒共享建立它的程序的位址空間 程序有自己的位址空間。執行緒可...

網路程式設計之 多執行緒併發伺服器

思路 迴圈等待連線,連線成功後建立乙個子執行緒處理該連線的資料通訊,然後主線程繼續等待連線。socket介面封裝 include wrap.h include include include void sys err const char ch intsocket int domain,int ty...