有四個執行緒1,2,3,4,執行緒1的功能就是輸出1,執行緒2的功能就是輸出2,以此類推.........
現在有四個檔案.abcd.初始都為空.
現要讓四個檔案呈如下格式:
a: 1 2 3 4 1 2....
b: 2 3 4 1 2 3....
c: 3 4 1 2 3 4....
d: 4 1 2 3 4 1....
設計程式.
#include
< sys/ types. h>
#include
< sys/ stat. h>
#include
< fcntl. h>
#include
< pthread. h>
#include
<
errno
. h>
#include
< unistd. h>
#include
< stdio. h>
#include
< sys/ types. h>
#include
< sys/
socket
. h>
typedef
struct file_node file_node;
char
*file
=;file_node node_list[ 4]
;void
* thread_func(
void
*arg);
int main(
)node_list[ i]
. w_pipe = sockpair[ 0];if
( i !
= 3)
node_list[ i+ 1]
. r_pipe = sockpair[ 1]
;else
node_list[ 0]
. r_pipe = sockpair[ 1]
;node_list[ i]
. fd =
open
(file
[ i];if
( node_list[ i]
. fd < 0)
}//建立執行緒
for( i= 0; i< 4; i++)
pause();
}void
* thread_func(
void
*arg
)//通知下乙個執行緒寫 if(
write
( node_list[ num]
. w_pipe,
(void*)
& w_fd,
sizeof
(int))
!=sizeof
(int))
if(read
( node_list[ num]
. r_pipe,
& w_fd,
sizeof
(int))
!=sizeof
(int))
}pthread_exit
( 0);}
多執行緒同步問題
在應用程式中使用多個執行緒的乙個好處是每個執行緒都可以非同步執行。對於 windows 應用程式,耗時的任務可以在後台執行,而使應用程式視窗和控制項保持響應。對於伺服器應用程式,多執行緒處理提供了用不同執行緒處理每個傳入請求的能力。否則,在完全滿足前乙個請求之前,將無法處理每個新請求。然而,執行緒的...
多執行緒 同步問題
我們先看個錯誤示例。功能 宣告乙個數字並賦值10000.然後讓1w個執行緒去減少1,1w個執行緒去增加1。理論上說,加一萬減一萬,最後數字的結果並不會改變。class errordemo 釋放object的方法 synchronized 塊結束或者異常丟擲。使用synchronized後的 publ...
多執行緒 同步問題
我們先看個錯誤示例。功能 宣告乙個數字並賦值10000.然後讓1w個執行緒去減少1,1w個執行緒去增加1。理論上說,加一萬減一萬,最後數字的結果並不會改變。class errordemo t1.start reduce i t1 建立1w個增加執行緒 for int i 0 i t2.start a...