我现在将多个设备的操作代码都封装到一个DLL中了。我的GUI中有两个线程,两个线程都会用到这个DLL中的代码,这样就必须用锁来防止资源冲突,但是在GUI中加锁后,发现整个软件的运行时间变的比原来长很多,发现就是其中有个函数运行的时间较长,线程1一直要等线程2中的这个函数运行完了释放锁后才开始运行。
我想能否将锁写在DLL中的每个函数中,但是这样,GUI中的线程是否会冲突?我觉得极限情况下是会导致异常的啊?不知道别人都是如何编写可并行的动态链接库的哦?~
------解决思路----------------------
要想编写可并发的代码,无论是不是dll,都需要遵循如下准则:
不以并发的方式调用线程不安全的代码,使用必须独占的资源/设备以及使用任何非栈上的数据都要加锁。