![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows
zhjs_abc
不要在可以吃苦的时候而选择了安逸
展开
-
WSL无法打开或者卡死
wsl卡死或者无法打开原创 2022-09-20 17:04:36 · 13607 阅读 · 11 评论 -
TCP/IP网络编程学习笔记(十二)
重叠IO模型(Overlapped IO)中,IO操作本身是异步的,与调用IO函数的线程无关。也就是说,调用IO的线程只是发起IO操作,IO操作本身是由其他线程完成的,调用IO的线程可以同时干其他事情。不过,当确认IO操作是否完成时,默认还是需要调用IO的线程来确认。如果添加了回调函数,也就是IO操作完成后自动执行一个后处理函数,此时这个后处理函数也是由刚才发起IO请求的线程来执行的,并且只有当发起IO请求的线程执行了等待函数(比如WaitForSingleObjectEx(),WaitForMulti..原创 2020-09-23 15:52:03 · 87 阅读 · 0 评论 -
Windows下使用CreateThread()和_beginthreadex()的区别
根据《Win32多线程程序设计》中的介绍,当创建的子程序中包含某些C runtime 函数时,不应该使用CreateThread()。如果主线程以外的任意新建的线程中包含以下操作,则应该使用多线程版本的C runtime library,并使用_beginthreadex()和_endthreadex():在C程序中使用malloc()和free(),或者在C++程序中使用new()和delete();调用stdio.h或io.h中声明的任何函数,包括fopen()、open()、getchar..原创 2020-09-21 10:30:17 · 349 阅读 · 0 评论 -
Win32进程间通信简述
1. 消息使用WM_COPYDATA消息及相应的结构体来实现进程间的通信。特点:只能用SendMessage函数来发送消息,不能用PostMessage或PostThreadMessage来发送消息,所以只能是同步,不能异步通信;由于使用的SendMessage,所以只能用于窗口间的通信;传输的数据中不能含有指针,因此,C++的带有虚函数类的对象不能传输,以及很多STL容器也不能传输。2. 共享内存使用win32的相关函数创建共享内存来实现进程间通信,上述的消息方法内部就是使用的原创 2020-07-21 16:43:57 · 577 阅读 · 0 评论 -
Win32中线程的几种同步控制特点说明
1. 临界区(CRITICAL_SECTION):(1). 速度快(据称速度比互斥体快了100倍),使用方便;(2). 只适用于单一进程的各个线程之间;(3). 容易产生死锁(两个线程都进入了各自的临界区,导致两个线程相互等待对方的临界区时,出现无限等待的情况);(4). 不是核心对象,无法侦测其是否已被某个线程放弃(即无法确定某个线程在离开时已经释放了对应的临界区);(5). 如果由于某种原因导致线程离开时没有释放临界区,则此临界区永远被锁定,其他线程永远无法进入此临界区;(6). 同一个线程原创 2020-07-02 16:55:42 · 358 阅读 · 0 评论 -
Windows下异步IO的几种实现方式以及优缺点
Windows下异步IO的几种实现方式以及优缺点Windows下异步IO的实现方式通过等待文件句柄的激发来实现;通过OVERLAPPED结构体中的手动重置事件hEvent的激发来实现;通过异步过程调用(Asynchronous Procedure Call,APC)来实现;通过IO完成端口(IO Completion Ports,IOCP)来实现。...原创 2019-11-21 23:01:42 · 1384 阅读 · 0 评论 -
Windows下如何检测文件是被哪个进程占用了
Windws下如何检测文件是被哪个进程占用了通过Windows的Restart ManagerAPIs可以实现文件被占用的查询。Restart Manager是Windows下用以实现Installer的APIs,详细请看Windows Restart Manager 重启管理器。C++ 实现:这里是根据博客(How do I find out which process has a f...原创 2019-11-21 21:38:32 · 1276 阅读 · 0 评论