社区
C++ 语言
帖子详情
简单的多线程问题
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
打赏
收藏
简单的多线程问题
8个线程。 一个for循环,for(i=0;i<8*7*100;i++) 因为有一个8*7*100的一维数组,依次对每100个数据进行一个fft变换。 假设fft变换已经做好。 想用多线程进行如下操作: 第一个线程执行前7*100个数据,即进行7个fft变换。 第二个线程执行第二个7*100个数据,进行7个fft变换。 ... 第八个线程执行... 基本框架该怎样写? 主要是多线程这块不会。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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;
}
猫已经找不回了
2009-05-11
打赏
举报
回复
什么环境?你先搞清楚,是多个线程都要调用你的fft代码?那必须保证代码的重入性。
liliangbao
2009-05-11
打赏
举报
回复
帮顶~
crst_zh
2009-05-11
打赏
举报
回复
好像没啥意义啊?你开8个线程还要进行线程切换,总的时间比你一次执行完还慢。
除非在FFT变换的过程中还想响应用户界面操作,否则没啥意义,个人感觉。
如果非要那么做,也行,开8个线程,各自处理各自的那部分数据,反正这些数据之间又没有交集,不存在同步的问题。
taodm
2009-05-11
打赏
举报
回复
你准备在几核的CPU上跑这个程序?
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章