使用WinDbg调试关键区死锁
本文通过一个实例来讲解如何使用WinDbg来调试Windows CriticalSection死锁的问题。 一. 演示示例这里有一个关键区锁死问题的程序,运行之后依次点击“CS锁死”按钮、右上角退出按钮,程序就会卡死。 对于眼下的这个问题,界面完全失去响应,这说明负责消息处理的UI线程阻塞了。 对于几乎所有的windows GUI程序,编号为0的初始线程就是UI线程,windows发现该界面一段时间没有消息响应之后就会在标题后面加上“(未响应)”。
本文通过一个实例来讲解如何使用WinDbg来调试Windows CriticalSection死锁的问题。 一. 演示示例这里有一个关键区锁死问题的程序,运行之后依次点击“CS锁死”按钮、右上角退出按钮,程序就会卡死。 对于眼下的这个问题,界面完全失去响应,这说明负责消息处理的UI线程阻塞了。 对于几乎所有的windows GUI程序,编号为0的初始线程就是UI线程,windows发现该界面一段时间没有消息响应之后就会在标题后面加上“(未响应)”。
本文通过一个实例来讲解如何使用WinDbg来调试Windows Mutex死锁的问题。
在WebRTC的源码中有如下函数: 1234template <typename T>std::unique_ptr<T> WrapUnique(T* ptr) { return std::unique_ptr<T>(ptr);}
在进行数据库开发时,我们可能需要写很多存储过程,本文提供一个存储过程的模板,通过该模板可以简化存储过程的开发。
一、写在前面前面的文章已经介绍了套接字 I/O 的同步模型、WSAAsyncSelect模型、WSAEventSelect模型,到目前为止套接字I/O还剩下2个模型没有介绍:重叠模型,完成端口模型。 如果程序对性能和并发要求不高...
本文记录一个由错误使用StringCchVPrintf等格式化函数所导致的崩溃问题。
一、WSAEventSelect模型介绍WSAEventSelect模型和WSAAsyncSelect模型类似,但WSAEventSelect模型允许应用程序在一个或多个套接字上面接收以事件为基础的网络事件通知。该模型和WSAAsyncSelect模型的最主要的区别在于网络事件是由事件对象句柄完成的,而不是通过窗口消息完成的。
一、WSAAsyncSelect模型介绍利用 WSAAsyncSelect 模型结合 Windows 窗口消息循环,应用程序可以在一个套接字上接收以 Windows 消息为基础的网络事件通知。 在使用 WSAAsyncSelect 模型之前,首先需要创建一个 Windows 窗口,并为该窗口提供一个窗口过程支持函数(WndProc)。