免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5439 | 回复: 31
打印 上一主题 下一主题

[C] 我还是看不懂这个锁, ... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-27 13:56 |只看该作者 |倒序浏览
Lock(SM_W_WRITE);

  1. VOID        sm_lock(CHAR& flag,CHAR type)
  2. {
  3.         bgsm_loop:
  4.         if(flag==SM_FREE)
  5.         {
  6.                 flag=type;
  7.                 if(flag!=type)
  8.                 {
  9.                         MySleep(1);
  10. #if defined(__LINUX__)
  11.                         g_LockTimes ++ ;
  12.                         printf("lock fail %s,%d,%s",__FILE__,__LINE__,__PRETTY_FUNCTION__);
  13. #endif
  14.                         if((g_LockTimes>100)&&g_LockTimeOutEnable)
  15.                         {
  16.                                 g_LockTimes =0;
  17.                                 return;
  18.                         }
  19.                         goto bgsm_loop;
  20.                 }
  21.                 return;
  22.         }
  23.         else
  24.         {
  25.                 MySleep(1);
  26.                 goto        bgsm_loop;
  27.         }
  28. }
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2012-12-27 14:23 |只看该作者
混蛋逻辑,脑壳进水,误入歧途之代码。。

论坛徽章:
1
技术图书徽章
日期:2014-03-06 15:32:30
3 [报告]
发表于 2012-12-27 14:23 |只看该作者
这锁有bug,在这几行上:
        if(flag==SM_FREE)
        {
                flag=type;
                if(flag!=type)

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2012-12-27 14:28 |只看该作者
这锁要能起作用,操作系统还要提供mutex干嘛。。

刚才google了下,貌似是 武侠世界 源码里的,
知道某些游戏为啥频繁当机了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2012-12-27 14:31 |只看该作者
不但有bug,还不是真锁,会耗费系统资源。如果系统中有10000个线程用这个锁,效果会很爽。

这代码不会用来惩罚无良公司的吧,哈哈哈

论坛徽章:
0
6 [报告]
发表于 2012-12-27 14:48 |只看该作者
群雄逐鹿中原 发表于 2012-12-27 14:28
这锁要能起作用,操作系统还要提供mutex干嘛。。

刚才google了下,貌似是 武侠世界 源码里的,


你猜的不错,

论坛徽章:
0
7 [报告]
发表于 2012-12-27 14:48 |只看该作者
本帖最后由 ___BlueGuy___ 于 2012-12-27 14:55 编辑
群雄逐鹿中原 发表于 2012-12-27 14:28
这锁要能起作用,操作系统还要提供mutex干嘛。。

刚才google了下,貌似是 武侠世界 源码里的,


不是某些游戏,而是很多游戏...
你说说他混蛋在哪里? 他是怎么想的? 我看不懂

论坛徽章:
0
8 [报告]
发表于 2012-12-27 14:56 |只看该作者
selfrun 发表于 2012-12-27 14:23
这锁有bug,在这几行上:
        if(flag==SM_FREE)
        {


我还不知道那是不是bug,

论坛徽章:
0
9 [报告]
发表于 2012-12-27 15:07 |只看该作者
群雄逐鹿中原 发表于 2012-12-27 14:23
混蛋逻辑,脑壳进水,误入歧途之代码。。

小鹿 哥哥, 你教教我吧, 你是怎么看出来他混蛋的 ?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
10 [报告]
发表于 2012-12-27 15:11 |只看该作者
有大路不走,偏偏要自作聪明
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP