编程的几个问题,谢谢

1、多线程中,直接调用的子程序1,如果子程序1运行中调用子程序2。那么同时运作了2个线程,这2个线程都会经过子程序1去调用子程序2。我想问,这个子程序2的调用时还是多线程... 1、多线程中,直接调用的子程序1,如果子程序1运行中调用子程序2。那么同时运作了2个线程,这2个线程都会经过子程序1去调用子程序2。我想问,这个子程序2的调用时还是多线程吗?还是子程序2在处理时会先处理了来自线程1的调用在处理来自线程2的调用。

2、想让程序模块化,运行主程序框架。其他处理放DLL中,这种调用DLL会使程序运行效率降低吗?如果降低,降低程度有多少?

3、DLL有初始化代码。想问,主程序运行时就开始加载调用的DLL还是用到DLL命令时才会去加载?如果加载,那DLL初始化代码是否只执行一次?

-------------
望不吝赐教,随随便便,简单一概而过的勿答谢谢
展开
 我来答
bhtzu
2016-05-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4211万
展开全部
  1. 子程序2是否是多线程,由你调用的方式决定。如果用创建线程方式调用2,那么2就是另一个线程,否则,2就是从属于线程1的过程(当然,前提是1是以线程方式创建的);子线程再创建的子线程是否是同步执行的问题也是一样,默认是同步执行的,当然也可以使用异步线程和线程信号灯等方式控制多线程的相互影响。

  2. 放到DLL会降低效率,但这个降低非常小,是毫秒级的。只要不是多个DLL圈套圈的来来回回调用,这个效率的影响完全可以忽略不计。(当然,这里说的是传统DLL,而不是组件式DLL,组件化的效率牺牲比较大,不是毫秒级的)

  3. 不是所有的DLL都有初始化代码的。而组件方式的初始化,和传统DLL的初始化也有很大差别。一般来说,决定在哪里加载和初始化,有两个方面确定:a) 有些DLL组件必须在程序开始就初始化而且不能反复加载,这个没得说,必须按要求来;b) 不是必须初始加载的DLL,采用哪种方式是由效率和资源消耗的对比来决定的,如果经常使用并且初始化耗时较多,那么就应该初始化一次,如果dll只在某个局部使用并且使用频率很低,临时加载并在使用后释放是完全可以的。

  4. 关于3,简单的总结一下。大部分DLL都是采用初始化一次加载,因为临时加载效率更高的情况很少,这里有占用资源问题,也有程序的不可预期性问题。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式