首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

关于线程返回值的有关问题

2013-01-08 
关于线程返回值的问题正在做一个数据处理的程序,出现这样一个问题。最后会生成一个总的文件,文件里面是由若

关于线程返回值的问题
正在做一个数据处理的程序,出现这样一个问题。

最后会生成一个总的文件,文件里面是由若干数据组成,其中有两段数据是不相关的,所以我想用多线程来提高处理速度。但是呢,这两个数据要生成到一个文件内,且要求有先后顺序,请问多线程的返回值应该怎么处理,最好给个具体的代码实现,多谢各位。


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;
}



热点排行