请教:多线程问题,SetWaitableTimer 本帖最后由 liubj07 于 2011-11-29 22:31:09 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 运行的时候出现0xC0000005: Access violation reading location 0xfeeeff4a.内存访问错误你的两个线程要想同步,有很多种方法关键看你的应用比较适合哪一种WaitForSingleObject可以实现你的功能不过单进程中线程同步的话,用临界区吧,简单点感觉你要实现的功能简单,但是用到的技术却很深,适合吗? 对mfc也不是很熟悉,现在要在原来的代码中添加处理过程。想问下,临界区是在线程中任何地方添加都可以吗?还是必须在线程while循环的起始和结尾处添加~谢啦 界区是在线程中任何地方添加都可以吗?使用临界区的时候,要注意EnterCreticalSection和LeaveCretialSection它们之间的代码是原子性执行的 能再请教一个问题吗?进行数据库操作的时候,跑一段时间会出现lost connection to mysql server during query,又一次出现这个问题是在sqls1.Format(_T("SELECT H2S,SO2,SensorID FROM data JOIN topomap USING (AddrMAC) WHERE TimeTrans = '%s'"),strTimeTag);语句中,其中data表的数据很大,topomap比较小。 你为啥要在apc里面执行数据库操作.不知道用wait么?APC里面执行的东西貌似有些限制的。最好另外单开线程做数据库void startTimer(){ HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL); LARGE_INTEGER liDueTime; liDueTime.QuadPart=-300000000; SetWaitableTimer(hTimer, &liDueTime, 10000, NULL,NULL,true); hThread=(HANDLE)_beginthreadex(NULL,0,timerThread,NULL,0,NULL) }unsigned __stdcall timerThread(LPVOID){while(g_bRun){WaitForSingleObject(hTimer,INFINITE);//......//时间到,做你的操作}} win7 x64包含mfc的程序一运行就报错。 CLoginDlg dlg;m_pMainWnd = &dlg;编译出错? 请问VC++6.0装哪个版本的directx sdk比较好 在线等,求救高手 如何创建一个有焦点不激活的窗口? 怎样获得用户在视图上输入的文本的内容?(我很菜,大家不要笑我) 关于函数ShellExecute 如何在VC编的COM组件中发出错误,在VB中可以用ON ERROR捕获到? IC卡问题(帮帮忙)! UpdateData函数对所有控件都有用吗? 关于把按钮BMP图片的背景变透明的问题!!! 求助 MFC如何读取XML文件动态生成界面
内存访问错误
你的两个线程要想同步,有很多种方法
关键看你的应用比较适合哪一种
WaitForSingleObject可以实现你的功能
不过单进程中线程同步的话,用临界区吧,简单点感觉你要实现的功能简单,但是用到的技术却很深,适合吗?
使用临界区的时候,要注意EnterCreticalSection和LeaveCretialSection
它们之间的代码是原子性执行的
HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL); LARGE_INTEGER liDueTime;
liDueTime.QuadPart=-300000000; SetWaitableTimer(hTimer, &liDueTime, 10000, NULL,NULL,true); hThread=(HANDLE)_beginthreadex(NULL,0,timerThread,NULL,0,NULL)
}
unsigned __stdcall timerThread(LPVOID){
while(g_bRun){
WaitForSingleObject(hTimer,INFINITE);
//......
//时间到,做你的操作}}