游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1583|回复: 4

利用多和处理器的编程技术的疑问?

[复制链接]

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-2-26 20:12:00 | 显示全部楼层 |阅读模式
我看到有文章讲到
for(int i=0;i<numGameObj;i++)
    doCollisionCheck();

当将其分成两部分的时候,可以充分利用多核处理器的性能优势。
for(int i=0;i<numGameObj/2;i++)
    doCollisionCheck();
for(int i=numGameObj/2;i<numGameObj;i++)
    doCollisionCheck();

疑问:
线程的调度是由操作系统完成的,代码编译的时候并不能指定由哪个处理器运行,
所以以上效果根本得不到体现才对?

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
发表于 2008-2-26 20:45:00 | 显示全部楼层

Re:利用多和处理器的编程技术的疑问?

应该不行,这个代码是有逻辑顺序的,同时执行违背本意,多线程指的不是这个

54

主题

2916

帖子

3765

积分

论坛元老

Rank: 8Rank: 8

积分
3765
QQ
发表于 2008-2-27 11:59:00 | 显示全部楼层

Re:利用多和处理器的编程技术的疑问?

多核处理器应该不需要我们特意去为它专门编写代码来体现多核处理器的优势吧

3

主题

53

帖子

104

积分

注册会员

Rank: 2

积分
104
发表于 2008-2-27 13:05:00 | 显示全部楼层

Re:利用多和处理器的编程技术的疑问?

应该使用OpenMP来编译吧
使用#pragma指示符来指明

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2008-2-27 21:14:00 | 显示全部楼层

Re:利用多和处理器的编程技术的疑问?

这篇文章就是在介绍OpenMP的时候提到了,
我想了一下,应该是这个意思:分成两段之后,还需要再利用本地线程技术来体现。
Thread t1,t2;
t1.run(first for);
t2.run(second for);

不过我认为这样也并不能保证每个线程由单独的处理器执行,也没有实际去试过效果。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 06:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表