作者topwing (Levin)
看板C_and_CPP
标题[问题] thread的回传与等待
时间Tue Dec 8 17:25:50 2009
这支程式大意如下
使用者输入一个值,此值与一个矩阵同时传送到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
1F:推 abilitylife:你把CreateThread放在scanf後面不就好了? 12/08 17:33
2F:→ topwing:是可以这样没错,不过我还是想知道WaitForSingleObject的 12/08 17:37
3F:→ topwing:用法 12/08 17:37
4F:→ topwing:刚试了一下CreateThread放在scanf时,ThreadFunc还在运算时 12/08 18:00
5F:→ topwing:main里的m阵列也同时print出来 XD 12/08 18:00
6F:→ abilitylife:同时print出来是一定的压~不同时那干麻要用thread 12/08 21:06
7F:→ abilitylife:直接call function就好了~ 12/08 21:07
8F:→ topwing:痾...我只是想说明你在一楼所讲的会变成这状况而已..... 12/08 21:08
9F:推 abilitylife:XD~我记得在Linux的pthread.h里面有一个join的函式 12/08 21:17
10F:→ abilitylife:就是拿来等待thread结束,只是不知道windows有没有 12/08 21:18
11F:推 sunneo:WaitForSingleObject当参数是thread handler的时候等同join 12/08 21:31
12F:→ abilitylife:就像楼上大大说的这样XD 12/08 21:32