发布时间:2022-03-06 15:17:45
Compare And Swap :使用原子操作"比较和交换"来实现线程同步,CPU需要支持 原子操作"比较和交换"。上面的问题中,2个线程对 num 的数据的修改造成冲突的原因在于:读取 num的值,修改,写回。这三部步中,执行写回操作时,此时num的值可能已经不是原先读取的值了,因为可能被B在中间修改了。 所以执行写回操作时应该 先比.........【阅读全文】
发布时间:2016-08-26 11:56:28
僵尸进程的产生:当一个进程创建了一个子进程时,他们的运行时异步的。即父进程无法预知子进程会在什么时候结束,那么如果父进程很繁忙来不及wait 子进程时,那么当子进程结束时,会不会丢失子进程的结束时的状态信息呢?处于这种考虑unix提供了一种机制可以保证只要父进程想知道子进程结束时的信息,它就可以得到。.........【阅读全文】
发布时间:2013-06-13 09:37:50
私有数据的目的是希望每个线程可以独立的访问数据副本。而不需要担心与其他线程的同步访问问题。比如全局变量 errno他是基本进程的。因为进程创建的时候,子进程会复制父进程的数据空间,那么子进程就拥有自己的全局变量errno。即使存在多个进程间的频繁的切换,也不会造成error的访问错误,因为他们都有自己的errno全局变.........【阅读全文】
发布时间:2013-06-08 17:27:03
然后再来说说不在Pthread_attr_t结构中的线程属性:线程的可取消状态和可取消类型这两个属性。这两个属性影响这线程在响应pthread_cancel函数调用时所呈现的行为可取消状态属性有两种:PTHREAD_CANCEL_ENABLE(线程默认取消状态) 和PTHREAD_CANCEL_DISABLEint pthread_setcancelstate(int state,int *oldstat.........【阅读全文】
发布时间:2013-06-07 14:58:10
接着上篇:下面三个是与线程栈有关的属性:线程栈末尾的境界缓冲区大小线程栈的最低地址线程栈的大小通常我们需要修改一般只有线程栈的大小对于进程来说,虚拟地址空间大小是固定的,进程中只有一个栈。所以他的大小通常不是问题但对线程来说过,同样大小的虚拟地址空间必须被所有的线程共享,如果线程太多导.........【阅读全文】