首页
社区
课程
招聘
[求助]线程问题.
发表于: 2008-4-25 19:50 5309

[求助]线程问题.

2008-4-25 19:50
5309
mov esi,@lParam
assume esi:ptr STOKOKOK
mov ebx,[esi].lpsize

如果有两个线程同时在执行上面的代码,会不会出问题啊?因为esi,eax等寄存器互相都在用啊.

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 248
活跃值: (1056)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
线程在多CPU结构的计算机上才能同时执行,对于单CPU,从宏观上同步执行,微观上异步执行。这些都是线程引擎控制。ESI,EAX不会相互影响。
2008-4-25 20:40
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
3
楼上说的很对
单核cpu是分片执行的,无影响
多核才需要认真考虑
2008-4-25 20:54
0
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
但是我发现他们之间会出问题啊
2008-4-25 21:46
0
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
虽然是分时间片执行,但是这些寄存器都只有一个呀
2008-4-26 00:04
0
雪    币: 248
活跃值: (1056)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
线程引擎的水平反映操作系统开发的水平。至于如何工作的,只有老外才知道细节。如果宏观地了解此原理,参阅INTEL《SYSTEM PROGRAMMING GUIDE》(pdf文件)。对于应用层面的这些问题不用考虑过多。
2008-4-26 00:47
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
7
系统为每个未被挂起的线程分配CPU时间片(每个20ms),自动进行线程上下文包括寄存器环境的切换。如一线程A,20ms时间用完后,系统保存该线程此时的寄存器堆栈环境,然后切换到别的线程;当下一次切换到线程A时,把上次保存的寄存器堆栈环境恢复。

这样,系统线程的调度对于每个线程来说是“透明”的,每个线程都以为占有“整个”CPU资源。

总之,应用层面上,不需要担心这样的问题。但是对于同一进程的不同线程来说,对全局变量的读写就要注意不要“打架”了。

楼主应该说清楚,出的到底是什么问题。
2008-4-26 02:54
0
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
代码比较呕吐,大家帮我看看吧,为什么我不能多次查看桌面,比如查看一次了,我在打开查看一次就会报错.
2008-4-26 10:09
0
雪    币: 248
活跃值: (1056)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
粗粗地浏览了一下你的代码。解决此问题不在线程问题,而在完成口。
1。用完成口控制线程,MS建议每CPU带2个线程。
2。客户端没必要用完成口,用WINSOCKMSG。
3。异步通讯的交叠结构有问题。
4。完成口的更新未考虑。
要让你的代码工作可待数日。
DesktopCamera代码你测试过?可工作?
2008-4-26 15:34
0
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
就是我不能同时查看两个桌面,DesktopCamera代码应该没问题吧,我也不太确定.完成端口我按照书上的列子弄的,就是想弄一下完成端口,也不知道这样究竟对不对,哪位老大能帮我改改,找到错误原因,小弟万分感激.
2008-4-26 15:49
0
雪    币: 248
活跃值: (1056)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最近较忙,我会抽时间给你看看。代码的结构要做大的调整,无论解决或不能解决,都会给你回复。
等等吧。
你要“在服务端监视各客户端桌面”,不知我理解得正确否?我不是在做作业吧?
2008-4-28 16:22
0
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
是的,就是可以查看客户端桌面,并且可以实现同时查看多个客户端桌面.上传的代码在查看一个客户端桌面的时候没有问题,但如果查看多个就会有问题啊.
2008-4-28 18:17
0
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
OK了,我想我已经知道问题所在了,感谢大家.
2008-4-28 20:47
0
雪    币: 8599
活跃值: (5065)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
每个线程都有自己的线程上下文,寄存器不会互相干绕。
但是要访问同一块内存时就要做好同步。
2008-4-29 00:02
0
雪    币: 248
活跃值: (1056)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
既然OK了,祝贺!
提醒,客户端数据要压缩。
2008-4-29 21:48
0
游客
登录 | 注册 方可回帖
返回
//