能力值:
( LV2,RANK:10 )
|
-
-
2 楼
Sleep()之外的代码都耗时
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
你的结论是从什么地方得到的 ?
发你的出处
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
从高性能服务器角度来说,各种锁(包括各种显示和隐含的锁),各种IO和内核调用都是性能消耗的地方
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
那么线程的状态切换,线程自身被系统切换,
比如由 就绪到运行, 运行到堵塞,这些,哪个比较耗时间?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
线程创建和启动 最耗时
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
线程被堵塞,是不是都由用ring3切换到ring0 ?
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
这些问题如果楼主从逆向的角度来看的话就会很明白了.比如线程进入临界区的时候阻塞的情况,EnterCriticalSection的流程是这样的:先判断条件变量,如果发现锁已经被其他线程抢占,那么调waitsingleobject等待一个event,当其他线程释放临界区的时候那么就会触发这个event,这个时候当前线程就会从waitsingleobject返回继续尝试获取锁直到成功.这其中涉及有几个内核调用的(内核调用顾名思义要ring0-ring3切换)createevent,setevent,waitsingleobject
可能有的地方不一定对,但基本概念就这么个意思,具体权威详细的资料可参考论坛里其他地方.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
WaitForSingleObject ->
WaitForSingleObjectEx->
ZwWaitForSingleObject->
KiFastSystemCall->RING0
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
追加一个问题:
由于windows有内核线程。
那么请问,如果一个内核线程,那么是不是就不用从ring3到ring0的来回切换了?
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
是的.听说过有人为了提高服务器性能将代码都放到驱动里面实现.
|
|
|