我想编写一个dll,可以用java来调用它,第一次调用的时候产生主线程,以后每次调用就产生一个线程,请问实现的思路是什么

解决方案 »

  1.   

    我想实现的功能是这样的。前后两次的调用dll必须有一个时间差。。时间差由dll来判断。。若前一个调用完成了。。就可以完成后一个调用了
      

  2.   

    用线程池比较好!微软提供的线程池不太好用,最好自己写个。微软提供的线程池,在WT_EXECUTEINPERSISTENTTHREAD参数下只能支持4-5个线程(SetMaxThreads()在Relese下也貌似没效果),WT_EXECUTELONGFUNCTION参数下支持的线程数多点,但是超出数的线程就不会被执行,而且只要放进线程池的线程,就无法被结束,直到所有的线程都运行完,所以还是建议自己写个线程池(可能是我自己还有些没发掘出来)线程池有一个控制线程,用来创建子线程、以及管理子线程运行,当子线程结束时,返回到控制线程先,这样你可以自己控制线程的运行和结束。
      

  3.   

    不太明白你的要求,不过如果你要每次调用都会自动生成一个新线程,请在DllMain中的THREAD_ATTACH中加入建立线程代码。
    还可关注THREAD_DETACH
      

  4.   

    我的意思是这样的:我想完成这样的dll,例如说有一个全局变量。。每次调用将会减1。。但是我想每次调用显示的都不相同。。第一次调用显示8。。第二次调用显示7
      

  5.   

    这种需求可以用dll的共享数据段来实现,或者写配置文件,记录dll被调用次数
    #pragma  data_seg(".myseg")
      _declspec(dllexport) short Counter2 = 0;//共享数据
    #pragma data_seg()
      

  6.   

    这种需求可以用dll的共享数据段来实现,或者写配置文件,记录dll被调用次数 
    #pragma  data_seg(".myseg") 
      _declspec(dllexport) short Counter2 = 0;//共享数据 
    #pragma data_seg() 
    这个就是共享段?就是说每次加载Counter2就会被共享?