Q: 多线程 lock 之后不就是单线程了吗? 答:lock并不需要锁定所有的操作。操作共享资源的时候,才需要锁定。如: string下载Url;lock(list) { 下载Url= 取出Url(list);//1毫秒锁定,只能一个线程} 下载到硬盘(下载Url);//需要2秒,这里可以多线程下载。 个人理解:由于锁定时只用了1毫秒,在下载东西时,cpu就可...
这样就麻烦了,因为为了避免死锁,每个流程都要走一样的加锁顺序,而GUI中的这两个流程却是完全相反的,如果每一层都有一个锁的话加锁就是个难以完成的任务了,而如果每一层都共用一个锁的话,那就跟单线程没区别了。 于是GUI toolkits的开发者就“不负责任”地把GUI设计成了单线程消息队列机制,然后他们还说界面...