DLL内创建的线程与主程序创建的线程优先级问题..
现在写的东西有一个奇怪的现象:
写了一个类, 这个类自身带有一个临界, 访问这个类的所有函数, 均会先进入临界, 然后退出. 而且这个类所有数据, 均与UI无关.
当这个类, 是放在EXE里面, 然后写上两个函数
1. 开启线程进行访问
2. 不开启线程进行访问
在EXE里面, 不论怎样调用这两个函数, 均不会导致死锁的.
但是, 一旦将这个类, 和这两个函数, 放到DLL当中并导出这两个函数. 然EXE里面的调用方式没有变
(PS.线程并不是在DLLMain当中创建的, 导入DLL没有死锁)
那么应该是按照全部代码写在EXE中的情况应该要一至才对的.
不过出来的结果, 却是会随机性的死锁....
打印过具体的消息出来查看过, 发现, 只要是EXE主线程一动, DLL的线程就会立刻暂停, 跳到EXE主线程中处理, 也就是指
主线程中, 调用了函数1, 然后DLL创建了进行, 进入了临界区并对类进行访问, 访问到一半的时候, EXE主线程调用函数2, 直接用主线程申请进入临界区对类进行访问.
那么这个时间, 即使主线程进入不了临界区而锁定, 但DLL创建的线程也不会再动了....
这个是什么问题? 什么原因造成的? 请求高人指点?