傻瓜式网站模板,宁波网络推广seo软件,网站里的友情链接,国外做行程的网站什么是内核#xff1f;windows操作系统为了更好的管理进程#xff0c;线程#xff0c;创建了很多数据结构#xff0c;这些数据结构运行在windows的底层#xff0c;并不开放给开发人员#xff1b;所以开发人员称这些结构为内核#xff0c;但是为了开发人员能够使用#…什么是内核windows操作系统为了更好的管理进程线程创建了很多数据结构这些数据结构运行在windows的底层并不开放给开发人员所以开发人员称这些结构为内核但是为了开发人员能够使用windows将内核封装为句柄并开放所以句柄就是指向内核数据结构的一个程序员可以使用的对象。 我们前面所说的用户模式下的线程同步有一个缺点就是不能夸进程来实现同步比如QQ进程在启动的时候需要启动一个QQ密码保护进程这种问题就需要通过内核模式下的线程同步。 前面所说同步问题就是A等B的问题如何让线程A等待在内核模式下有如下方式 WaitForSingleObject(HANDLE hobject,DWORD waittime) 等待一个对象 WaitFormULTIPLEObjects( dword DWcOUNT //等待多少个内核对象 HANDLE* hobjectS //是哪些 BOOL waitAll, //是否等待所有 DWORD waittime) 等待多个对象 WaitForInputIdle(HANDLE hProcess ,DWORD waittime) 等到hProcess所指定的进程处理完所有的消息 MSGwaitForMultipleObjects(Ex) 等待多个对象或者当指定的内核对象所代表的线程中有消息进入 WaitForDebugEvent 等待被调试的线程发生某个事件时比如运行到断点程序结束等 SignalObjectandWait( Handle hObjectToSignal HANDLE hobectTowaitOn, DWORD waittime BOOL alertable) 等待hobectTowaitOn对象并在同时让hObjectToSignal触发【该操作是一个原子操作】 线程A要等到什么时候呢 1.时间到每一个等待函数都会制定一个等待时间当时间一到线程就醒来继续执行。 【这个时间可以设置为INFINITE表示线程A要等到永远直到事件触发】 2.事件触发人们等待通常是等到某个事件发生。比如:屌丝男要等到女神回心转意才肯婚娶 玩家2要等到花儿也谢了才出牌哲学家3要等到明白宇宙究竟是由哪种元素组成才肯闭眼。 在windows中内核对象的数据结构有一个标志用来表示内核所表示的事件是否发生如果事件发生我们叫触发如果没有发生我们叫该对象未触发。下面就来看一下这些内核对象所表示的事件 内核对象触发 进程结束进程进程的结束线程结束线程线程的结束互斥量MutexReleaseMutex函数调用之后互斥量只能有一个线程使用当一个线程释放成功互斥量的时候就表示该线程使用完了其他线程可以用了信号量ReleaseSemaphore调用之后创建好10个厕所只要有空厕所事件就触发事件SetEvent PulseEvent这里的事件表示为我们日常生活中的事件只列出常用不包含所有对象转载于:https://www.cnblogs.com/pavkoo/p/3426630.html