1、執行緒間的資料共享
(1)檔案共享:因為檔案儲存在pcb裡面,有檔案表陣列的存在。任何執行緒開啟的檔案,其他執行緒都可以通過檔案描述符操作檔案。
**驗證:
#include
#include
#include
#include
#include
#include
void* pthread_fun(void *arg)
void main()
列印結果:
man pid = 3163
fun pid = 3163
所以檔案是共享的。
(2)全域性變數共享
**驗證:
#include
#include
#include
#include
#include
#include
int ga=10;
void* pthread_fun(void *arg)
void main()
列印結果:ga = 20
所以全域性變數是共享的。
(3)堆區共享
**驗證:
#include
#include
#include
#include
#include
#include
char*s=null;
void* pthread_fun(void *arg)
void main()
列印結果:*s=98
'b'是乙個字元,對應的ascll是98,所以堆區共享。
(4)棧區不共享。
總結:多執行緒之間共享全域性變數、堆區資料、檔案描述符,但是各執行緒有自己的棧區。
而對於父子程序之間:全域性、棧區、堆區都不會共享,但是檔案是共享的。
2、執行緒的引數傳遞
eg:在主線程中定義區域性變數int a=10,在函式執行緒中將其改為20。
可以,因為pthread_create中最後乙個引數是void*,可以傳位址。
**驗證:
#include
#include
#include
#include
#include
#include
void* pthread_fun(void *arg)
void main()
列印結果:a=20
也可以用另外一種傳遞引數方法,如**所示,剛好與上面的相反,即將pthread_create()中的傳遞引數直接為值,從而函式執行緒中將「*」去掉。
#include
#include
#include
#include
#include
#include
void* pthread_fun(void *arg)
void main()
列印結果:a=20
C 執行緒間傳遞引數
我們如果定義不帶引數的執行緒,可以用threadstart 帶乙個引數的用parameterizedthreadstart。帶多個引數的用另外的方法,下面逐一講述。一 不帶引數的 c sharp view plain copy using system using system.collection...
執行緒間共享資料
首先給大家分享乙個巨牛巨牛的人工智慧教程,是我無意中發現的。教程不僅零基礎,通俗易懂,而且非常風趣幽默,還時不時有內涵段子,像看 一樣,哈哈 我正在學習中,覺得太牛了,所以分享給大家!點這裡可以跳轉到教程 一 每個執行緒執行的 相同 若每個執行緒執行的 相同,共享資料就比較方便。可以使用同乙個run...
執行緒間的資料共享
執行緒間的資料共享可以通過兩種方式 通過thread子類建立程序的方法 通過runnable介面實現程序之間的共享 比較這兩種實現程序共享的區別 thread子類建立程序 package practice4 public class threadsale extends thread public ...