摘要:
举个例子:sendmessage()同步,postmessage()就是异步的而对于阻塞与非阻塞个人认为是一种程序的状态,如果调用的函数或者操作不能返回就被阻塞住了,如果能立即返回就不阻塞了,细节可以看看操作系统。注意阻塞和sleep一样都会让出cpu给别的线程执行。 阅读全文
摘要:
thread detach, join线程有两种状态,joinable或者detachable,pthread默认创建的线程是joinable的,也可以指定atrribute创建成一个detachable的线程。一个线程被创建后,最终一定要调用join或者detach(或者设置成detachable),以保证最后线程的资源会得到回收。对于一个joinable的线程,join它后要等到它执行结束,调用线程才能继续向前运行。如果调用线程既希望被创建的线程资源回收,又不会被阻塞在join,那怎么办呢,调用detach,让其自动回收。join:主线程被阻塞 detach:会分离,子线程自动回收资源 阅读全文
摘要:
进程三个基本状态:就绪、阻塞、运行这个比较简单,进程创建后进入就绪状态、然后若CPU空闲或能打断CPU正在执行的进程(优先级低的),那么就绪状态转换成运行态,运行时,进程需要用到其他资源,但不能立即获得的话,那么运行太会转换到阻塞态,等待资源的获取,当资源获取后,阻塞太就会转换成就绪态,然后看CPU情况而定是否转换成运行态,进程执行完后就转换成了停止态。五状态(多了就绪挂起和阻塞挂起)这种不是太确定,至于什么是挂起,从网上没有搜到太明确的说明,有一种说明是进程从内存中调到了外存中(页中断)。上个图说明吧。这里关键是不知道为什么扶起,至于是不是内存调试的原因,还有待进一步查资料。在五状态中,对于 阅读全文
摘要:
经常看到线程中用sleep(),到底是什么用处,下面讲的比较通俗:我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?我们先回顾一下操作系统原理。操作系统中,CPU竞争有很多种策略。Uni 阅读全文