在同一个时间片??如果时间片用完了,cpu就会被剥夺,好象什么办法也无济于事吧
解决方案 »
- FindFirstFile函数如何查找指定文件夹下最新生成的文件?
- TextOut()的问题
- 用TextOut往DirectX的surface输出文字之前能否描边?
- 初学者的问题
- 急救!!VC中编程备份ACCESS数据库
- MFC生成窗口
- CComObject<CMyClass> *pMyClass=new CComObject<CMyClass>出错
- 如何能做出金山词霸样式的窗口!
- 特别恨csdn开始页面的画面,它让我必须等30秒才可以登陆!!!
- 怎么修改IP地址(静态IP)
- Install Shield V6.5 简体中文版下载?
- VC的DIALOG资源是不是和delphi/cb的FORM一样?
如果允许你说的情况,CPU完全被一个用户线程占用,那么内核代码还执不执行?如果用户由于疏漏,刚好是个死循环怎么办?操作系统绝望?重起?
无论用什么办法,你都只能是相对的多获得一些CPU时间,但绝对不可能完全占有CPU。你甚至可以用野蛮的办法将其他用户线程统统挂起(我不知道这会导致什么结果),但对内核线程你无能为力。
CRITICAL_SECTION cs;
InitializeCriticalSection(&cs);EnterCriticalSection(&cs);
......
LeaveCriticalSection(&cs);试了一下,是NT上的东西,98上不能用,还得回去再试也不知道NT4.0行不行, 请问各位大侠98上有没有此类似的东西?
不知你用不用MFC
CCriticalSection对象也许可以满足你的要求
还有mutex,event等等
CCriticalSection 在MSDN中可以查到, 但还是没闹懂, VC++中也看不出,请进一步指教.tar(GPS)
EnterCriticalSection(&cs)函数是有的,不过
error LNK2005: "struct _RTL_CRITICAL_SECTION cs" (?csOutput@@3U_RTL_CRITICAL_SECTION@@A)...
请进一步点拨
#include "windows.h"
int main(int argc, char* argv[])
{
CRITICAL_SECTION cs;
InitializeCriticalSection(&cs);
EnterCriticalSection(&cs); LeaveCriticalSection(&cs);
printf("Hello World!\n");
return 0;
}I tried the sample above,and no error occured.
about syncronization,you can see msdn->platform sdk document->base service->
dll,process,thread->sycronization
首先,多谢
上面的程序,我这也编译通过了可是,在一个MFC程序中该怎么做呢?可能我的基本功太差还望多指点.
无法强制一段程序在同一个时间片里执行。
你遇到的问题也许是线程访问临界量的问题吧。
用MFC的CCriticalSection对象假设临界量是类CSource的数据成员,你的两个线程通过该类的ChangeMember()函数改变该临界量的值。
首先,你为该类添加一个CCriticalSection类型的成员变量m_Section.
然后,在ChangeMember()函数中添加如下代码
ChangeMember()
{.....
CSingleLock sLock(&m_Section);
sLock.Lock();
//以下添加改变临界量的代码
.........
//以上添加改变临界量的代码
sLock.Unlock();.....
}你的两个线程就可以通过调用ChangeMember函数改变临界量,而不发生非正常的情况了