多線程之間數(shù)據(jù)共享 多線程間怎么傳遞數(shù)據(jù)?
多線程間怎么傳遞數(shù)據(jù)?傳遞多個(gè)參數(shù)的多線程可以通過(guò)以下方法實(shí)現(xiàn):typedef struct{void*arg1 void*arg2//add semaphore}argvoid func(void*
多線程間怎么傳遞數(shù)據(jù)?
傳遞多個(gè)參數(shù)的多線程可以通過(guò)以下方法實(shí)現(xiàn):typedef struct{void*arg1 void*arg2//add semaphore}argvoid func(void*arg1,void*arg2){Arg a.arg1=arg1 a.arg2=arg2//initialize a.semaphore=0 pthreaduuCreate(&tid,routine,NULL,&a)//wait a.semaphore}void*routine(void*Arg){Arg a=(Arg*)Arg void*arg1=a->arg1 void*arg2=a->arg2//post a.semaphore}參數(shù)表,也稱為形式參數(shù)表,包含任意數(shù)量的(包括0,即沒(méi)有)參數(shù)描述項(xiàng)。當(dāng)有多個(gè)參數(shù)時(shí),兩個(gè)參數(shù)描述項(xiàng)必須用逗號(hào)分隔。每個(gè)參數(shù)描述項(xiàng)由定義的數(shù)據(jù)類型和變量標(biāo)識(shí)符組成。變量標(biāo)識(shí)符稱為函數(shù)的形式參數(shù),形式參數(shù)前面給出的數(shù)據(jù)類型稱為形式參數(shù)的類型。函數(shù)定義可以省略,表示該函數(shù)是非參數(shù)函數(shù)。如果它被void替換,也表示它是一個(gè)非參數(shù)函數(shù)。如果它不是空的,也不是保留字void,則稱為參數(shù)函數(shù)。
如何向線程傳遞參數(shù)?
一個(gè)常見(jiàn)的錯(cuò)誤是使用全局變量將參數(shù)傳遞給線程。事實(shí)上,這種方法的缺點(diǎn)是不安全、麻煩,如果要打開(kāi)多個(gè)線程,甚至更麻煩。正確的方法是將線程和線程入口函數(shù)所需的參數(shù)分別封裝到一個(gè)類中,必要時(shí)還可以封裝一些輔助函數(shù)。這樣,代碼簡(jiǎn)單明了,易于重用。接下來(lái),用一個(gè)thread類的例子來(lái)說(shuō)明。首先,線程類如下:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類:線程類//--文件:clsThreadFun.cs /--德描述:這個(gè)班演示如何使用線程類。 //--作者:奈特 //--日期:3月21日,2006 //-------------------------------------------------------------- //---------------------------{ThreadFun Class}-------------------------------------usingsystemnamespacescsnewtest{///