请问,主线程和自己开的线程之间切换的机制是什么。。是根据时间片轮流切换么? 请问,主线程和自己开的线程之间切换的机制是什么。。是根据时间片轮流切换么?大概的机理可以介绍一下么?比如说,我自己开了一个线程,用于对外设采样数据的读取,那么它什么时候会切换到主线程,从主线程又切换回来后。其中大概有多少时间的间隔?因为我的线程是实时采样,故两次读数据的间隔不太太久。(我的主线程中没有什么操作。) 刚学线程,很多概念不清楚,望高手指点一下,谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果,在自己开的线程中有一句Sleep(200),停留200ms或者,在自己开的线程中调用驱动IO_Control(...),级别Ring0,需要的时间大概为200ms,那么线程该如何切换呢?根据什么原则呢? 我在自己开的线程中调用驱动DeviceIoControl(...),级别为Ring0,需要的时间大概为200ms,我知道,好像一般的应用程序运行级别都在Ring3,可以帮我分析一下它和主线程是如何切换的呢?---------------按我的理解,是不是这样的:由于自己开的线程中主要是执行DeviceIoControl(...),为驱动级别Ring0,运行优先级别很高,故在执行DeviceIoControl(...)的时候无法切换回主线程。主线程(20ms)-->自己的线程(200ms) --> 主线程(20ms)-->自己的线程(200ms)哪位高手可以指点一下,谢谢!! 自己开的线程调deviceiocontrol的时候,仍然是在ring3,不会到ring0去。是who告诉你的? 我调用deviceiocontrol(),然后返回回来,就需要耗费200ms,在这期间。。你的意思是。。在调用deviceiocontrol(),然后返回出来的200ms的执行时间里,系统还是可以进行进程的切换么?? 不清楚你的时间是怎么算出来的。调了deviceiocontrol,成功了就会有在ring0的线程run了,时间应该是被它占了。 for(i=0;i<=100,i++) { deviceiocontrol(Device_ID,64000,temp,......);}其中,Device_ID是打开的设备名称,temp是一个64K字节数组的指针,执行一次deviceiocontrol(Device_ID,64000,temp,......);意味着从设备上读取64K个字节,成功了返回TRUE,失败了返回FALSE;我循环执行了100次,用了20秒,所以,我算出每个deviceiocontrol()的时间是200ms是不是,我哪里理解不对,概念不清,请指点,谢谢!! 按我的理解,是不是这样的:主线程(20ms)-->自己的线程(200ms) --> 主线程(20ms)-->自己的线程(200ms)----------------------------------------之前,我执行100次deviceiocontrol(),耗时20秒,没有开线程,直接在主线程中,相应按钮事件,计时为20秒。 关于Burrows-Wheeler 变换-BWT的作用 中兴实习=一道编程题的疑问。。。。 字符串返回失误 关于WSASend的相关操作??急,在线等!! 里面的代码如何写(刚学VC) 各位达人们,帮忙看看regdeletekey函数用法,删除注册表一个子键函数,谢谢了 有个异常我老是逮不到!高手指点,在线等... 提问:一个字符串替换问题 在TC2。0里怎么样写倾斜的椭圆?请指点,谢谢, 找一个API函数,请告之,万分感谢! 请教高人!!!!!!!!!!!!!!!!!!!!!!!!!!!! VC编译过程中提示找不到头文件,是不是因为目录设置问题
或者,在自己开的线程中调用驱动IO_Control(...),级别Ring0,需要的时间大概为200ms,
那么线程该如何切换呢?根据什么原则呢?
可以帮我分析一下它和主线程是如何切换的呢?
---------------
按我的理解,是不是这样的:
由于自己开的线程中主要是执行DeviceIoControl(...),为驱动级别Ring0,运行优先级别很高,故在执行DeviceIoControl(...)的时候无法切换回主线程。
主线程(20ms)-->自己的线程(200ms) --> 主线程(20ms)-->自己的线程(200ms)哪位高手可以指点一下,谢谢!!
你的意思是。。
在调用deviceiocontrol(),然后返回出来的200ms的执行时间里,系统还是可以进行进程的切换么??
调了deviceiocontrol,成功了就会有在ring0的线程run了,时间应该是被它占了。
deviceiocontrol(Device_ID,64000,temp,......);
}
其中,Device_ID是打开的设备名称,temp是一个64K字节数组的指针,执行一次deviceiocontrol(Device_ID,64000,temp,......);意味着从设备上读取64K个字节,成功了返回TRUE,失败了返回FALSE;
我循环执行了100次,用了20秒,所以,我算出每个deviceiocontrol()的时间是200ms是不是,我哪里理解不对,概念不清,请指点,谢谢!!
主线程(20ms)-->自己的线程(200ms) --> 主线程(20ms)-->自己的线程(200ms)
----------------------------------------
之前,我执行100次deviceiocontrol(),耗时20秒,没有开线程,直接在主线程中,相应按钮事件,计时为20秒。