关于线程返回值的问题
正在做一个数据处理的程序,出现这样一个问题。
最后会生成一个总的文件,文件里面是由若干数据组成,其中有两段数据是不相关的,所以我想用多线程来提高处理速度。但是呢,这两个数据要生成到一个文件内,且要求有先后顺序,请问多线程的返回值应该怎么处理,最好给个具体的代码实现,多谢各位。
ps: 楼下的大哥们可以拿这个举例子
我有两个方法
int func1 (int x,int y)
{ return x+y; }
int func2 (int x ,int y)
{return x*y;}
我希望用两个线程,分别执行两个方法,且把方法1的返回值存进 result 然后再把方法2 的返回值存进结果。
可行不?应该如何使用线程?谢谢
[解决办法]
C# 4.0很简单:
#include "stdafx.h"
#include <windows.h>
int tickets=100;
HANDLE hmutex;
DWORD WINAPI Function1(LPVOID lpParameter);
DWORD WINAPI Function2(LPVOID lpParameter);
int result=0;
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hthread1,hthread2;
hmutex=CreateMutex(NULL,TRUE,"Tickets");
hthread1=CreateThread(NULL,0,Function1,NULL,0,0);
hthread2=CreateThread(NULL,0,Function2,NULL,0,0);
CloseHandle(hthread1);
CloseHandle(hthread2);
printf("Main is running\r\n");
ReleaseMutex(hmutex);
Sleep(4000);
getchar();
return 0;
}
int func1 (int x,int y)
{ return x+y; }
int func2 (int x ,int y)
{return x*y;}
DWORD WINAPI Function1(LPVOID lpParameter)
{
WaitForSingleObject(hmutex,INFINITE);
result=func1(3,6);
printf("The function1 result is %d\r\n",result);
ReleaseMutex(hmutex);
while(1)
{
Sleep(1000);
}
return 0;
}
DWORD WINAPI Function2(LPVOID lpParameter)
{
WaitForSingleObject(hmutex,INFINITE);
result=func2(7,8);
printf("The function2 result is %d\r\n",result);
ReleaseMutex(hmutex);
while(1)
{
Sleep(1000);
}
return 0;
}