[問題] thread的回傳與等待

看板C_and_CPP (C/C++)作者 (Levin)時間16年前 (2009/12/08 17:25), 編輯推噓3(309)
留言12則, 3人參與, 最新討論串1/1
這支程式大意如下 使用者輸入一個值,此值與一個矩陣同時傳送到ThreadFunc運算與存取,再傳回main顯示 EX:使用者輸入"2",2與m這矩陣同時傳入ThreadFunc運算與存取 m[0] = 2*2; m[1] = 3*3; m[2] = 4*4; m[3] = 5*5; m[4] = 6*6; 然後再把m這array回傳到main 問題: (1)使用者所輸入的值我會傳送,但是如何傳送m這array並回傳到main (2)開啟了ThreadFunc後,它不管使用者輸入了沒就直接運算了,所以我要如何 讓它等使用者輸入完畢再進行運算。    我找過是不是可以用WaitForSingleObject ?? 但是...要如何使用,我網路上找的範例程式都看不懂,不知道有沒有人可以示範 感謝! cood如下 #include <stdio.h> #include <stdlib.h> #include <windows.h> void ThreadFunc(int n) { int i; for(i = 0; i < 5; i++) m[i] = (n + i) * (n + i); } int main() { HANDLE hThread; DWORD threadId; int n,m[5],i; hThread = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)ThreadFunc, (LPVOID)n,0,&threadId); printf("請輸入整數:"); scanf("%d",&n); for(i = 0; i < 5; i++) printf("m[%d] = %d",i,m[i]); CloseHandle(hThread); system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.107.123

12/08 17:33, , 1F
你把CreateThread放在scanf後面不就好了?
12/08 17:33, 1F

12/08 17:37, , 2F
是可以這樣沒錯,不過我還是想知道WaitForSingleObject的
12/08 17:37, 2F

12/08 17:37, , 3F
用法
12/08 17:37, 3F

12/08 18:00, , 4F
剛試了一下CreateThread放在scanf時,ThreadFunc還在運算時
12/08 18:00, 4F

12/08 18:00, , 5F
main裡的m陣列也同時print出來 XD
12/08 18:00, 5F

12/08 21:06, , 6F
同時print出來是一定的壓~不同時那幹麻要用thread
12/08 21:06, 6F

12/08 21:07, , 7F
直接call function就好了~
12/08 21:07, 7F

12/08 21:08, , 8F
痾...我只是想說明你在一樓所講的會變成這狀況而已.....
12/08 21:08, 8F

12/08 21:17, , 9F
XD~我記得在Linux的pthread.h裡面有一個join的函式
12/08 21:17, 9F

12/08 21:18, , 10F
就是拿來等待thread結束,只是不知道windows有沒有
12/08 21:18, 10F

12/08 21:31, , 11F
WaitForSingleObject當參數是thread handler的時候等同join
12/08 21:31, 11F

12/08 21:32, , 12F
就像樓上大大說的這樣XD
12/08 21:32, 12F
文章代碼(AID): #1B7XkX7n (C_and_CPP)
文章代碼(AID): #1B7XkX7n (C_and_CPP)