回 帖 发 新 帖 刷新版面

主题:[原创]一个棘手的问题,希望各位赐教!!!

分布式程序设计问题
结合程序的代码来说明一下我的问题:
void main(void)
{
    while(currentbest.value>limit)
    {
      ……
    }
    后续处理命令
}

如上所示,当多台电脑同时执行该程序的时候,如果其中有一台电脑跳出了while循环(也就是已经找到了满意解),则其他电脑立即跳出while,转而继续执行“后续处理命令”

回复列表 (共3个回复)

沙发

while(currentbest.value>limit && getcooperateinfo())
{
...
}

加个判断部分,不过编写的时候要考虑效率

板凳

效率问题我也同样考虑,因为跳出来就是不想做多余的运算
如果加入这个判断,每次进入循环都要判断一次,势必会降低效率
我的想法是:当一台电脑提前完成计算任务的时候,发送一个消息给其他电脑,让他们都跳出while循环,转而执行“后续指令”
To jzyray:
    getcooperateinfo()是什么指令,用来做什么的?我在C中找不到该函数,恳请执教!!!

3 楼

getcooperateinfo()是个自定义函数

“发消息给其它电脑”,这个函数就是用于异步检测发过来的消息的,如果完成任务则返回false,退出循环

我来回复

您尚未登录,请登录后再回复。点此登录或注册