编程学习记录14.7.21

编程记录


  1. 在C++ 11中,指针所指向的目标对象都是const,即不可更改。若需要通过指针来更改指向对象的值,需要显式转换:const_cast<T &>

  2. 在WINAPI中,对于内核对象mutex,锁占用和释放有以下几点需要注意:

    • 最好成对出现waitrelease

    • 互斥机制在不同线程(进程)之间才有作用,同一线程(进程)重复调用WaitForSingleObjectReleaseMutex没有作用;相当于告诉系统我要使用XXX,在使用中再次告诉系统我要使用XXX,系统不会死锁;

    • wait的意义可以理解成告诉系统,这块内核对象我要使用了,别人不许使用;release的意义相应的就是我不用了,可以给别人用了;这样解释而不是简单的认为是锁住了,会让人更容易理解为什么不会死锁,因为使用权本来就在自己手中,所以不会再次给你;

    • 一个线程声明wait(我要使用),另一个线程的release(我不用了)对它无效,不会使mutex解锁;想想你说我要用这个东西,现在不能给别人用了,这时又来一个人说我不用这个东西了,系统怎么可能因为他不用而从你手中收回使用权;

    • 所以mutex不是单纯的++--互斥关系,而是记录了哪个线程当前在使用,只有使用者声明release才会解除锁;

  3. 对于for(;;){}while(1){}死循环的选择,for(;;){}的反汇编是无条件跳转,而while(1){}需要判断条件;

     /*********************************************/
         while (1)
         003B52CE  mov         eax,1  
         003B52D3  test        eax,eax  
         003B52D5  je          main+29h (03B52D9h)  
         {
         }
         003B52D7  jmp         main+1Eh (03B52CEh)  
     /*********************************************/
         for (;;)
         {
         }
         003B52E4  jmp         main+34h (03B52E4h)  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值