请问个在DLL中使用线程的问题,困饶我一天了. 我在DLL中使用了线程,线程中用while语句,在别的程序中调用此DLL接口函数来启动此线程没问题.但是如果不作成对外的函数,在DLL的构造函数中启动此线程,然后在别的程序中只加载DLL而不调用接口函数就出现问题了,程序好象很忙不响应鼠标.如何解决?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的程序在忙着处理WHILE循环,那顾得上你得鼠标呢!如果没错得话,你此时得CUP利用率应该是100% 我知道程序很忙,但是我是在一个线程中,而且线程在DLL里。即使在线程中不用while也一样 做个测试,在while(1)中加入小量延时试试 .. ThreadFunc(PVOID pParam){ ... while(1) { ... Sleep(20); } ...} 在DLL加了AfxMessageBox没有相应。我看《windows核心编程》中讲的DLL延时加载好像说得就是这个问题,但是具体我看不懂,那位朋友能帮帮我看看。 DLLMain中不要启动线程,这是微软的一个bug,启动线程和DLLMain防止重入使用了同一个内核信号,处理不好会造成死锁http://support.microsoft.com/?kbid=142243 afc(afc) 说得对,问题就在这。谁有办法100相送 没有办法,只能把创建线程部分挪出去,增加一个函数,就象winsock的WSAStartup一样 好像用DLL延时加载可以解决,但是我不会,谁会?各位大哥帮帮 应该可以的,使用CreateThread创建线程,而不是AfxBeginThread ,后者创建一个挂起的线程并等待,导致DllMain不可重入。另外在while循环中加入SwitchToThread()或Sleep(0)强迫线程调度。 sxmzmxh(哥舒帶菜刀) 说的也有问题,如果我调用LoadLibrary之后立即或者间隔很短调用FreeLibrary,此后线程开始执行,但是线程所在的地址空间被释放,会产生访问违规。 MDI view设置背景色怎么样才不闪烁 下面的钩子调用:怎么全篇找不到将dll注入进程的语句,急,看了2通宵 ado 我想拉伸图片到按钮那么大,或者缩小按钮到图片那么小,如何做到? 请问静态库应该怎么调用呢? 流传的“真正”的程序员(大家see see) PostMessage:一个参数传递的问题 如何让CButton能够响应拖动事件。 图像采集卡的二次开发 怎样编辑256色的位图 求助matlab程序,急急急!!! 关于MDI子窗体显示的问题
{
...
while(1)
{
...
Sleep(20);
}
...
}
http://support.microsoft.com/?kbid=142243