简单的多线程问题

rabbitjerry 2009-05-11 03:48:43
8个线程。
一个for循环,for(i=0;i<8*7*100;i++)
因为有一个8*7*100的一维数组,依次对每100个数据进行一个fft变换。
假设fft变换已经做好。
想用多线程进行如下操作:

第一个线程执行前7*100个数据,即进行7个fft变换。
第二个线程执行第二个7*100个数据,进行7个fft变换。
...
第八个线程执行...

基本框架该怎样写?
主要是多线程这块不会。。
...全文
144 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dansley 2009-05-12
  • 打赏
  • 举报
回复
开辟线程个数的经验公式:
线程个数<=CPU个数*2+2
wohow 2009-05-12
  • 打赏
  • 举报
回复
首先确定你的编译器支持多核,然后确定操作系统支持多核(XP是支持的),最后确定你的for循环的循环体之间不会互相影响(否则8线程可能比单线程还慢):
#pragma omp parallel
for(i=0;i <8*7*100;i++)
{
...
}

这段代码编译器会帮助你按照处理器个数创建新线程,如果不想按照处理器个数,想自己指定线程个数,omp.h里面有更多函数
rabbitjerry 2009-05-12
  • 打赏
  • 举报
回复
我的电脑是8核的,所以开8个线程。。。
wohow 2009-05-12
  • 打赏
  • 举报
回复
太遗憾了,上面贴的代码居然少了一个for
#pragma omp parallel
会在每个线程执行一遍完整的for循环
#pragma omp parallel for
会把for循环执行任务平均分到每个线程中。
once_and_again 2009-05-12
  • 打赏
  • 举报
回复





很多时间化在线程切换的路上了.
passionboy03 2009-05-11
  • 打赏
  • 举报
回复
up
我前几天开了4个线程做东西……
[Quote=引用 2 楼 crst_zh 的回复:]
好像没啥意义啊?你开8个线程还要进行线程切换,总的时间比你一次执行完还慢。
除非在FFT变换的过程中还想响应用户界面操作,否则没啥意义,个人感觉。
如果非要那么做,也行,开8个线程,各自处理各自的那部分数据,反正这些数据之间又没有交集,不存在同步的问题。
[/Quote]
zbihong 2009-05-11
  • 打赏
  • 举报
回复
我也正搞多线程这个东西,支持下,学习学习!!
wanglchr 2009-05-11
  • 打赏
  • 举报
回复
#include <windows.h>
#include <iostream.h>

DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
);

DWORD WINAPI Fun2Proc(
LPVOID lpParameter // thread data
);

void main()
{
HANDLE hThread1;
HANDLE hThread2;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
Sleep(4000);
}

DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
)
{
cout<<"thread1 is running"<<endl;
return 0;
}

DWORD WINAPI Fun2Proc(
LPVOID lpParameter // thread data
)
{
cout<<"thread2 is running"<<endl;
return 0;
}
  • 打赏
  • 举报
回复
什么环境?你先搞清楚,是多个线程都要调用你的fft代码?那必须保证代码的重入性。
liliangbao 2009-05-11
  • 打赏
  • 举报
回复
帮顶~
crst_zh 2009-05-11
  • 打赏
  • 举报
回复
好像没啥意义啊?你开8个线程还要进行线程切换,总的时间比你一次执行完还慢。
除非在FFT变换的过程中还想响应用户界面操作,否则没啥意义,个人感觉。
如果非要那么做,也行,开8个线程,各自处理各自的那部分数据,反正这些数据之间又没有交集,不存在同步的问题。
taodm 2009-05-11
  • 打赏
  • 举报
回复
你准备在几核的CPU上跑这个程序?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧