檔案傳輸專案模組1 執行緒池

2021-06-29 11:21:35 字數 1109 閱讀 9111

#ifndef threadpool_h

#define threadpool_h

#include#include"locker.h"//執行緒的互斥和同步機制

templateclass threadpool

;templatethreadpool::threadpool(int thread_number, int max_requests):

m_thread_number(thread_number), m_max_requests(max_requests), m_stop(false), m_threads(null)

//建立陣列用來存放執行緒號

m_threads = new pthread_t[m_thread_number];

if(!m_threads)

//建立thread_number個執行緒,並將它們設定為脫離執行緒

for(int i=0; iworker(); 提高了效率

//設定執行緒狀態為非阻塞,結束後立即返回 類似於waitpid

if( pthread_detack(m_threads[i]) )

}}templatethreadpool::~threadpool()

m_workqueue.push_back(request);

m_queuelocker.unlock();//操作完成後解鎖

m_queuestat.post();//v操作 即將訊號量加1 以告訴執行緒有幾個請求可以進行處理

return true;

}templatevoid * threadpool::worker(void *arg)

templatevoid threadpool::run()

t *request = m_workqueue.front();//獲取將要處理的請求

m_workqueue.push_front();//該請求出隊

m_queuelocker.unlock();//佇列操作完畢 解鎖

if(!request)//請求為空 進行下一次迴圈 繼續進行輪詢

request->process();//真正的請求處理函式!!! }}

#endif

多執行緒檔案傳輸改進(1)

上次寫的檔案傳輸程式在傳輸大檔案時會看人品崩潰,問題出在send 和buffersize上,在cilent.c的程式上改寫如下地方 define buffer size 1024 sender 函式中改寫如下兩處 send sockfd,head buf,strlen head buf 0 slee...

檔案傳輸, socketserver模組

一.檔案傳輸 伺服器端 思路 做乙個要穿的內容的字典,計算字典的長度,然後傳送字典的長度和字典的json的字串,再傳送內容 import struct import socket import json import hashlib sock socket.socket sock.bind 127....

Python檔案傳輸模組ftplib

ftplib是基於ftp協議實現的乙個python模組 from ftplib import ftp 建立乙個ftp連線物件 ftp ftp 當帶有引數時,即 ftp ftp host,user,passwd,acct 會進行方法呼叫connect host 當給出使用者時,另外進行方法呼叫 其中p...