假设Dll程序中有10个可以调用的函数,而且这10个函数是并列的(都同处于一个单线程的进程中)。如果用别的程序调用这个Dll的时候,出现同时访问dll中两个或两个以上的函数,那么这几个函数同时进行调用,还是“排队”等待下一个访问的机会,也即函数有一个在调用时,其它函数的调用就不会马上进行?

解决方案 »

  1.   

    在单CPU的系统中,不会出现真正的并行
      

  2.   

    不会引起调用冲突。如果这样都会冲突,想想GDI32.DLL GDI.DLL, Windows 多少个应用程序调用了这个动态库,又有多少个程序同时使用了同一个API呢。没有问题,对吗?当然如果你的DLL 的函数的独立性不好,是要共同写某个数据或者读某个资源的,才会有冲突....这与DLL本身无关了...是你DLL设计问题。
      

  3.   

    不会出现你说的问题,不管是单还是多cpu。建议你多看些有关DLL方面的基础知识,再去动手做东西。要不然出了错,却死活找不到原因,太郁闷了。
      

  4.   

    首先,在DLL中,所有的函数没有高低等级。调用DLL中的函数,就如调用局部函数一样。
    而引起冲突的原因只是同时访问同一资源。比如:你有两个函数都是操作串口COM1的。那么这两个函数如果被同时调用,而在函数内部又没有作互斥处理。则这两个函数就有冲突,不能被同时调用。
      

  5.   

    我的dll程序中的好几个函数都涉及到了访问串口资源,看来一定会产生冲突了。那么发生冲突时会造成什么后果?是直接出错,还是等待访问?