鱼C论坛

 找回密码
 立即注册
查看: 1973|回复: 0

如何解决线程冲突问题?用锁也不行啊!

[复制链接]
发表于 2014-4-7 11:01:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 隐袭战龙 于 2014-4-7 11:03 编辑

同样是在大炮打飞机里面
这是一个多线程版本
里面要同时输出飞机,子弹以及信息
但是输出的时候产生了位置冲突(由于是多线程,输出的时候跑到了不正确的输出位置,互相冲突)
我便加了锁,如下
unsigned int __stdcall MoveProcess(LPVOID game)
{
        while(repeat)
        {
                while(OutputLock);
OutputLock=true;
planemove();
makeplane();
printplane();
OutputLock=false;
                Sleep(speed);
        }
        _endthreadex(0);
        return 0;
}

unsigned int __stdcall InfoProcess(LPVOID game)
{
        while(repeat)
        {
                while(OutputLock);
OutputLock=true;
printinfo();
OutputLock=false;
        }
        _endthreadex(0);
        return 0;
}

本以为这样可以解决问题,但是出现了类似于死循环的症状就是在while(OutputLock);这里卡住,要卡上一段时间
我想问的是怎么样才能正确加锁?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 00:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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