能力值:
( LV2,RANK:10 )
|
-
-
2 楼
线程在多CPU结构的计算机上才能同时执行,对于单CPU,从宏观上同步执行,微观上异步执行。这些都是线程引擎控制。ESI,EAX不会相互影响。
|
能力值:
( LV12,RANK:470 )
|
-
-
3 楼
楼上说的很对
单核cpu是分片执行的,无影响
多核才需要认真考虑
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
但是我发现他们之间会出问题啊
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
虽然是分时间片执行,但是这些寄存器都只有一个呀
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
线程引擎的水平反映操作系统开发的水平。至于如何工作的,只有老外才知道细节。如果宏观地了解此原理,参阅INTEL《SYSTEM PROGRAMMING GUIDE》(pdf文件)。对于应用层面的这些问题不用考虑过多。
|
能力值:
( LV12,RANK:300 )
|
-
-
7 楼
系统为每个未被挂起的线程分配CPU时间片(每个20ms),自动进行线程上下文包括寄存器环境的切换。如一线程A,20ms时间用完后,系统保存该线程此时的寄存器堆栈环境,然后切换到别的线程;当下一次切换到线程A时,把上次保存的寄存器堆栈环境恢复。
这样,系统线程的调度对于每个线程来说是“透明”的,每个线程都以为占有“整个”CPU资源。
总之,应用层面上,不需要担心这样的问题。但是对于同一进程的不同线程来说,对全局变量的读写就要注意不要“打架”了。
楼主应该说清楚,出的到底是什么问题。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
代码比较呕吐,大家帮我看看吧,为什么我不能多次查看桌面,比如查看一次了,我在打开查看一次就会报错.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
粗粗地浏览了一下你的代码。解决此问题不在线程问题,而在完成口。
1。用完成口控制线程,MS建议每CPU带2个线程。
2。客户端没必要用完成口,用WINSOCKMSG。
3。异步通讯的交叠结构有问题。
4。完成口的更新未考虑。
要让你的代码工作可待数日。
DesktopCamera代码你测试过?可工作?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
就是我不能同时查看两个桌面,DesktopCamera代码应该没问题吧,我也不太确定.完成端口我按照书上的列子弄的,就是想弄一下完成端口,也不知道这样究竟对不对,哪位老大能帮我改改,找到错误原因,小弟万分感激.
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
最近较忙,我会抽时间给你看看。代码的结构要做大的调整,无论解决或不能解决,都会给你回复。
等等吧。
你要“在服务端监视各客户端桌面”,不知我理解得正确否?我不是在做作业吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
是的,就是可以查看客户端桌面,并且可以实现同时查看多个客户端桌面.上传的代码在查看一个客户端桌面的时候没有问题,但如果查看多个就会有问题啊.
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
OK了,我想我已经知道问题所在了,感谢大家.
|
能力值:
( LV4,RANK:50 )
|
-
-
14 楼
每个线程都有自己的线程上下文,寄存器不会互相干绕。
但是要访问同一块内存时就要做好同步。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
既然OK了,祝贺!
提醒,客户端数据要压缩。
|
|
|