zoukankan      html  css  js  c++  java
  • 《windows核心编程》

            这段时间把《windows核心编程》给读完了,感觉很爽,不愧为一本经典书籍呀。
            读完这本书,我终于把原来不太明白的地方搞清楚了,感觉对windows又有了深一步的了解。我在这里要记录一下我一直以来写的错误代码。
     
             1、Critical Section 
              原来一直没有搞清楚Critical Section 这个东西的真正含义,我以往在线程中要保护资源经常这样写:
              void ThreadFunction(PVOID pvParam)
              {
                      //创建一个Critical Section对象
                      需要保护的资源
                      //释放该Critical Section对象
               }
               原来Critical Section Object是必须用全局变量的(即指所有线程可见), 而且这里的所有线程都是君子:即所有线程都用该Critial Section Object来访问资源,倘若有一个线程不用这个Critial Section Object去访问资源的话,后果很严重哦,:)
               看看俺原来的代码,似乎是每次访问资源的时候都创建一个Critical Section Object,很明显这样根据保护不了资源。

              2、相关窗口的API
              一直以为SetFocus()、 GetActiveWindow()、 SetActiveWindow()等api是全局的,现在才明白她们只是针对当前的线程。如果当前线程所创建的窗口没有激活的窗口,GetActiveWindow()就会返回NULL。现在也终于明白GetForegroundWindow() 和 GetActiveWindow()的区别,原来在一个Button按钮写下事件来获取这两个函数所返回的Handle, 结果返回的Handle都相等,于是俺就错误地理解了这两个api。hoho~~~, 学技术是不能马虎的。
              现在也明白了AttachTreadInput()这个api应该在什么情况下使用了,:)

              3、其它
              一直没有留意WaitForSingleObject的“副加作用”,也总是按照MSDN上的示例照抄,却不明白所以然。现在总算搞清楚了,WaitForSingleObject会将相应的对象置为“未通知”状态。


    -----------------------------------------------------------------------------------------------------------------------------
             在读了的这么多技术书籍当中,这两本书是最为值得收藏:

              《编程精粹 - Microsft编写优质无错C程序秘决》
              《windows核心编程》

              等俺有了钱,一定要把《windows核心编程》的E文版买回来收藏,有空的时候看看也是一种享受呀,^_^
  • 相关阅读:
    读Android之大话设计模式--前言和说明
    把二叉树打印成多行
    按之字形顺序打印二叉树
    对称的二叉树
    二叉树的下一个结点
    链表中环的入口结点
    字符流中第一个不重复的字符
    表示数值的字符串
    构建乘积数组
    数组中重复的数字
  • 原文地址:https://www.cnblogs.com/JLL/p/249462.html
Copyright © 2011-2022 走看看