多執行緒模型
在多執行緒模型下,注意共享資料的同步,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...