#include #include #include #include #include #include #include #include #include #include #include #define buffer 512
struct copy_file
;void *copy(void *arg)
} if(bytes_write==-1)
break;
*bytes_copy_p+=bytes_read;}}
close(infile);
close(outfile);
pthread_exit(bytes_copy_p);
}int main(int argc,char **argv)
/* 給執行緒分配空間,其實沒有必要這麼多的 */
thread=(pthread_t *)malloc(sizeof(pthread_t)*num);
file=(struct copy_file *)malloc(sizeof(struct copy_file)*num);
if((thread==null)||(file==null))
for(i=0,j=0;id_name);
if(stat(filename,&filestat)==-1)
/* 我們忽略目錄 */
if(!s_isreg(filestat.st_mode))
continue;
if((file[j].infile=open(filename,o_rdonly))<0)
strcat(filename,".bak");
if((file[j].outfile=open(filename,o_wronly|o_creat,s_irusr|s_iwusr))<0)
/* 建立執行緒,進行檔案拷貝 */
if(pthread_create(&thread[j],null,copy,(void *)&file[j])!=0)
fprintf(stderr,"create thread[%d] error:%s\n\a",i,strerror(errno));
j++;
}byte_copy=0;
for(i=0;i
int pthread_create(pthread_t *thread,pthread_attr_t *attr,
void *(*start_routine)(void *),void *arg);
void pthread_exit(void *retval);
int pthread_join(pthread *thread,void **thread_return);
38pthread_create 建立乙個執行緒,thread是用來表明建立執行緒的id,attr 指出執行緒建立時
候的屬性,我們用null 來表明使用預設屬性.start_routine 函式指標是執行緒建立成功後開
始執行的函式,arg 是這個函式的唯一乙個引數.表明傳遞給start_routine 的引數.
pthread_exit 函式和exit 函式類似用來退出執行緒.這個函式結束執行緒,釋放函式的資源,並在
最後阻塞,直到其他執行緒使用pthread_join 函式等待它.然後將*retval 的值傳遞給
**thread_return.由於這個函式釋放所以的函式資源,所以retval 不能夠指向函式的區域性變
量. pthread_join 和wait 呼叫一樣用來等待指定的執行緒. 下面我們使用乙個例項來解釋一
下使用方法.在實踐中,我們經常要備份一些檔案.下面這個程式可以實現當前目錄下的所有
檔案備份.備份後的字尾名為bak
Redis 七 執行緒模型
redis內部使用檔案事件處理器file event handler,這個檔案事件處理器是單執行緒的,所以redis才叫做單執行緒的模型。它採用io 多路復用機制同時監聽客戶端的多個連線 多個socket 根據socket上的事件來選擇對應的事件處理器進行處理。檔案事件處理器的結構包含4個部分 多個...
CUDA 學習(七) 執行緒束
一 概述 執行緒束是gpu的基本執行單元。gpu是一組simd 向量處理器的集合。每一組執行緒或執行緒束中的執行緒同時執行。在理想狀態下,獲取當前指令只需要一次訪存,然後將指令廣播到這個執行緒所占用的所有sp中。當使用gpu進行程式設計時,必須使用向量型別指令,因為gpu採用的是向量體系結構,只有讓...
C 執行緒處理 七 執行緒實列
本筆記摘抄自 記錄一下方便資料查詢。伺服器端頁面 這裡牽涉到httphandle物件問題,這個物件在asp.net中是真正處理資料的物件,後面如果有時間也和大家分享下深入理解asp.net系列,主要是介紹在asp.net中一些核心物件為我們默默做的一些事情,在這裡也不詳細介紹httphandle物件...