这两天因工作需要,写了个算法,计算复杂度较高。期望利用多核机器的优势,并行计算,加快运行速度。简单看了看资料,尝试两个小程序。
程序一:函数能并行运行就OK。
DWORD WINAPI Fun(LPVOID lpParamter)
{
cout<<"Fun display"endl;
i++;
}
int main (void)
{
cout << "Now starting to verify multi-thread on windows" << endl;
HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);
CloseHandle(hThread);
while(1)
{
cout<<"main display!"<<endl;
Sleep(2000);
}
cout << "Press anykey to bye-bye" << endl;
getchar();
return 0;
}
程序二:传个参数进到并发函数中,如下:
DWORD WINAPI Fun(LPVOID lpParamter)
{
int iCount = *((int*)lpParamter);
int i = 0;
while(i < iCount)
{
cout<<"Fun display in the "<< i << " times" <<endl;
i++;
// Sleep(1000);
}
return iCount;
}
int main (void)
{
cout << "Now starting to verify multi-thread on windows" << endl;
int i = 1000;
HANDLE hThread = CreateThread(NULL, 0, Fun, &i, 0, NULL);
CloseHandle(hThread);
while(1)
{
cout<<"main display!"<<endl;
Sleep(2000);
}
getchar();
return 0;
}
程序三:在写上两个程序的时候,听说OpenMP神器,尝试一下
int main (void)
{
cout << "Now starting to verify multi-thread on windows" << endl;
int iArray [100];
for (int i=0; i<100; i++)
iArray[i] = i;
#pragma omp parallel for num_threads(2)
for (int i=0; i<100; i++)
cout << iArray[i] << endl;
getchar();
return 0;
}
运行的时候,可以看到:1. 双核都在计算;2. 数组实际上是乱序输出(多个线程并发的结果)。
最后我工作中采用的是OpenMP。
分享到:
相关推荐
功能: 多线程动画演示程序。 动机: 1. 尝试为自己的程序添加活泼一点的界面。 2. 练习多线程编程技术,尤其是解决线程之间的同步问题。 3. 练习资源的提取与转换。 说明: 1. ImageList项下的两个图形均由我编制的...
本书尝试从编写应用程序的角度,从“Hello,World”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过70多个从简单到复杂的例子,逐步深入Win32汇编编程的方方面面。笔者从事汇编编程已经有十几...
Microsoft Windows 系统错误代码简单分析: 0000 操作已成功完成。 0001 错误的函数。 0002 系统找不到指定的文件。 0003 系统找不到指定的路径。 0004 系统无法打开文件。 0005 拒绝访问。...
if (write_pid() ) //避免同时有多个该程序在运行 return -1; if (pipe(fd1) ) { perror("pipe failed"); exit(-1); } if (s_pipe(fd2) ) { perror("pipe failed"); exit(-1); } int port = atoi(argv...
读者已经尝试过探索Windows内核程序,并尝试阅读反汇编代码。那么接下来,必须掌握修改内核的方法。每一个Windows内核程序,都可以看做Windows内核本身的一个“补丁”。有时只需要独立存在,就能起到它的作用;有时...
读者已经尝试过探索Windows内核程序,并尝试阅读反汇编代码。那么接下来,必须掌握修改内核的方法。每一个Windows内核程序,都可以看做Windows内核本身的一个“补丁”。有时只需要独立存在,就能起到它的作用;有时...
读者已经尝试过探索Windows内核程序,并尝试阅读反汇编代码。那么接下来,必须掌握修改内核的方法。每一个Windows内核程序,都可以看做Windows内核本身的一个“补丁”。有时只需要独立存在,就能起到它的作用;有时...
程序多任务性能优秀,切换迅速等。当然,它也具有系统细节不完善、电源管理不好、软件的界面不太好、支持的软件厂商还比较少等缺点。但是凭借谷歌公司的强大实力以及与开放手机联盟的通力合作,我们相信Android会...
当P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接 UDP 客户端可以创建指定带宽的UDP流 测量丢包 测量延迟 支持多播 当P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持...
读者已经尝试过探索Windows内核程序,并尝试阅读反汇编代码。那么接下来,必须掌握修改内核的方法。每一个Windows内核程序,都可以看做Windows内核本身的一个“补丁”。有时只需要独立存在,就能起到它的作用;有时...