首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否会等待到子例程执行完毕?

在云计算领域,子例程通常指的是一个独立的代码块或函数,它可以在主程序中被调用并执行。子例程的执行时间取决于其内部的逻辑和操作。

在一般情况下,主程序会等待子例程执行完毕,然后再继续执行后续的代码。这是因为子例程可能会返回一些结果或者对主程序的执行产生影响,所以主程序需要等待子例程执行完毕以确保正确的执行顺序和结果。

然而,在某些情况下,主程序可能不需要等待子例程执行完毕。这通常发生在并行计算或异步编程的场景中,其中主程序可以继续执行后续的代码,而不必等待子例程的完成。这种情况下,主程序可以通过回调函数、事件驱动机制或者异步编程模型来处理子例程的执行结果。

总结起来,是否等待子例程执行完毕取决于具体的编程模型和需求。在一般情况下,主程序会等待子例程执行完毕以确保正确的执行顺序和结果。但在某些并行计算或异步编程的场景中,主程序可以选择不等待子例程的完成。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言main()主函数执行完毕是否执行一段代码

main() 主函数执行完毕后,是否可能执行一段代码?给出说明。...main主函数是所有程序必须具备的函数,是C/C++人员一接触代码就知道的函数,那么这个问题难倒很多人,尤其是平常不注意思考,不懂得问为什么的程序员, 这个问题的答案是:main() 函数结束后可以执行一些代码...函数的时候,会做一些自身清理工作,同时刷新标准输出缓冲区中的内容),当执行到exit(0)时,exit自动调用这些已注册过的函数,但是由于压栈过程中先入后出的原则,所以先注册的函数最后执行 关于atexit...同时如果一个函数被多次登记,那么该函数也将多次的执行。...main函数结束时也隐式地调用exit()函数。

1.8K50
  • C++ 线程的使用

    基于命名空间 this_thread 得到当前线程的线程 ID 在上面的示例程序中有一个 bug,在主线程中依次创建出两个子线程,打印两个子线程的线程 ID,最后主线程执行完毕就退出了(主线程就是执行...在某个线程中通过线程对象调用 join() 函数,调用这个函数的线程被阻塞,但是线程对象中的任务函数继续执行,当任务执行完毕之后 join() 清理当前线程中的相关资源然后返回,同时,调用该函数的线程解除阻塞继续向下执行...在上面示例程序中最核心的处理是在主线程调用 doSomething(); 之前在第 35、36行通过线程对象调用了 join() 方法,这样就能够保证两个子线程的任务都执行完毕了,也就是文件内容已经全部下载完成...在线程分离之后,主线程退出也一并销毁创建出的所有线程,在主线程退出之前,它可以脱离主线程继续独立的运行,任务执行完毕之后,这个子线程自动释放自己占用的系统资源。...()函数之后,父子线程分离,同时二者的连接断开,调用joinable()返回false 在线程调用了join()函数,线程中的任务函数继续执行,直到任务处理完毕,这时join()清理(回收)当前线程的相关资源

    87330

    linux 进程通信-管道(pipe)《Rice linux 学习开发》

    实际上,通常先是创建一个管道,再通过fork()函数创建一进程,该进程继承父进程的所创建的管道 父子进程分别拥有自己的读写通道,为了实现父子进程之间的读写,只需把无关的读端或写端的文件描述符关闭即可...,此时,父子进程之间就建立起了一条“进程写入,父进程读取”的通道 2-标准流管道 基于文件流的管道主要是用来创建一个连接到另外一个进程的管道,这里的“另外一个进程”也就是一个可以进行一定操作的可执行文件...但不能使用前面的read()和write()一类不带缓冲的I/O函数 与之相对应,用popen()函数创建的流管道必须使用函数pclose()来关闭流管道,该函数关闭标准I/O流,并将等待命令执行完毕...,这里的非阻塞标志可以在open()函数中设定为O_NONBLOCK 对于读进程 若管道是阻塞打开,且当前FIFO内没有数据,则对读进程而言将一直阻塞到有数据写入 若管道是非阻塞打开,则不论FIFO内是否有数据... 例程 通道例程中,提供了有名管道的读例程和写例程例程请参考我github的pipe目录下的read.c和write.c。

    1.6K20

    java并发中CountDownLatch的使用

    java并发中CountDownLatch的使用 在java并发中,控制共享变量的访问非常重要,有时候我们也想控制并发线程的执行顺序,比如:等待所有线程都执行完毕之后再执行另外的线程,或者所有线程都准备好了才开始所有线程的执行...这里我们定义子线程类,在线程类里面,我们传入一个CountDownLatch用来计数,然后在线程结束之前,调用该CountDownLatch的countDown方法。...最后在主线程中调用await()方法来等待线程结束执行。...上面的例子中,我们是主线程等待线程,那么在这个例子中,我们将会看看怎么子线程一起等待到准备好的状态,再一起执行。...思路也很简单,在线程开始之后,将等待的线程计数器减一,在主线程中await该计数器,计数器归零之后,主线程再通知线程运行。

    38410

    linux多线程pthread

    Thread Library)线程库,这个线程库有以下几个目标: POSIX兼容,都处理结果和应用,底启动开销,低链接开销,与Linux Thread应用的二进制兼容,软硬件的可扩展能力,与C++集成。...这是线程退出的一种方法: 运行完毕,自动退出;       2) 调用pthread_exit函数主动退出;       3) 进程终止函数exit函数,一旦结束了进程,那么此进程中所有线程都将无条件终止...实际上,这个函数是就是一个线程阻塞函数,调用它的函数将一直等待到被等待的线程结束为止。当函数返回时,被等待线程的资源就被回收。...但在取消线形程请求的接收端,事情稍微复杂一些,好在也不是太复杂。...如果线程使用return从例程返回,那么pthread_clean_push建立的清理处理程序不会被执行

    5K20

    Linux系统-进程控制

    页表) 添加进程到系统进程列表当中,当fork返回后开始调度器调度进程 示图: fork后执行问题: 当一个进程调用fork之后,父子进程共享同一份代码,也就是说整个代码父子进程都可以看到...进程的PCB保留着退出前任务执行的信息,而通过回收进程我们可以知道子进程运行完成,结果对还是不对,或者是否正常退出 注:非必须,依执行的程序和需求而定 尽量使父进程晚于进程退出,可以规范化进行资源的回收...,以此获取进程退出的信息 使用对应的宏可以查看我们需要的退出信息:WIFEXITED(status): 若为正常终止进程返回的状态,则为真(查看进程是否是正常退出);WEXITSTATUS(status...): 若WIFEXITED非零,提取进程退出码(查看进程的退出码) 参数options: 设置为0:表示默认的阻塞式等待进程退出,即进程没退出就不返回,一直等待到进程退出回收进程...exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行 注:调用exec并不创建新进程,只是将进程的代码和数据写时拷贝成新程序的代码和数据(达到替换的效果),所以调用

    1.5K30

    开源:微信小程序控制esp8266

    [1848461-20200629185116954-518848724.png] 流程说明:首先要使esp8266能够联网,能联网就可以控制,使用示例程序,修改WIFI、密钥信息即可联网控制。...修改完毕后,下载程序到esp8266即可,可以通过串口调试助手查看通信详情。 当检测到消息为on 时,执行开灯,当检测到消息为off 时,执行关灯。...开发者可在控制台推送on或者off,然后查看串口,看esp8266是否收到,如果收到,说明正常可进行下一步微信小程序编写。...默认每5秒自动请求一下服务器,查看esp8266的状态信息。...点击打开或者关闭按钮,打开esp8266串口调试助手,可查看esp8266是否收到指令,如果第一步esp8266已联网,都是可以收到信息的。 如果界面和其他功能都开发完毕

    3.7K30

    Java多线程 (Part3: 线程、进程原理、阻塞队列)

    "+Thread.currentThread().getName()+"正在执行"); Thread.sleep(3000); System.out.println("线程...Thread.sleep(3000); System.out.println("线程"+Thread.currentThread().getName()+"执行完毕");...("2 个子线程已经执行完毕"); System.out.println("继续执行主线程");CyclicBarrier(回环栅栏-等待至Barrier状态再全部同时执行)让一组线程等待到某个状态后再全部同时执行...、切换都由系统控制,这种调度机制不会让一个thread的堵塞导致整个process堵塞协同式调度某一线程执行完主动通知系统切换另一个线程; 不存在线程同步问题; 线程切换可以预知一个thread阻塞导致整个...Share 共享资源 (比如 Semaphore, CountDownLatch)共享,多个threads可以执行AQS主要实现方法isHeldExclusivelu() 线程是否独占资源tryAcquire

    20410

    解决python tkinter 与 sleep 延迟问题

    参考链接: Python sleep() 多线程(threading——join)   join ()方法:主线程A中,创建了线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待...,直到线程B完成操作后,   才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法。...join([timeout]) 里面的参数时可选的,代表线程运行的最大时   间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主线程或函数都会接着执行的,如果线程执行时间小于参数表示的...   时间,则接着执行,不用一定要等待到参数表示的时间。     ...主线程A中,创建了线程B,并且在主线程A中调用了B.setDaemon(),这个的意思是,把主线程A设置为守护线程,这   时候,要是主线程A执行结束了,就不管子线程B是否完成,一并和主线程A退出.这就是

    1.5K40

    Apache和PHP三种结合方法、三种MPM模式及解析漏洞

    也预先fork了几个子进程(数量比较少),一个进程创建很多线程,同时包括一个监听线程。每个请求过来,会被分配到1个线程来服务。线程比起进程更轻量,因此,内存的占用减少一些。...是考虑稳定性,如果一个线程异常挂了,导致父进程及父进程下的其他的正常线程都挂了。...如果使用keep-alive的长连接方式,某个线程一直被占据,也许中间几乎没有请求,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也导致在高并发场景下的无服务线程可用。...在event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。...c、fastCGI模式 动态服务器和静态服务器分离,让CGI解释器得意更快实现,可以提供良好的性能、伸缩性、Fail-Over特性 解析漏洞 在apache/conf目录下有个mime.types文件

    1.3K42

    图解ForkJoin

    Fork/Join是在Java7中提供的一个并发执行任务的框架。他的基本运行流程就是:把一个大任务分解成任务,如果子任务还不是足够小,就继续分解成任务,一直分解到足够小。...A是一个很热情的线程,想过去帮忙,但是如果两个线程访问同一个队列,产生竞争,所以A想了一个办法,从双端队列的尾部拿任务执行。...fork()方法异步执行任务,join方法可以一直等待到任务执行完毕。这个我们会在接下来的示例代码中也会有具体讲解。...进入compute方法,首先会判断当前任务的边界是否足够小,是否小于等于阈值(原子任务的大小,这个由你自己来规定)。...如果足够小,则无法再进行拆分,直接for循环累加计算然后返回;如果大于阈值(这里是2),则异步fork(线程)出任务,继续递归调用compute方法,然后执行join,等待任务执行完毕,并得到执行结果返回

    1.2K20

    Handler面试八问

    sendMessageDelayed()方法来发送延迟消息,其实最终是通过方法中指定的延时时长 + 当前时间戳,计算出来该消息确定的分发时间,然后通过sendMessageAtTime()方法插入到MessageQueue中,等待到这个时间点之后才会分发处理该消息...同步消息和异步消息的target在传入MessageQueue的时候保证不为空,以便与在消息分发的时候知道该消息应该分发给谁,而屏障消息的target是空的,这也是Handler中判断一个消息是否为屏障消息的标准...如何在线程中弹窗Toast 在线程中调用Looper.prepare()方法,并调用Looper.loop()方法,这样就会在线程中创建一个Looper对象和MessageQueue消息队列,而loop...()让当前线程开始监听消息,这样我们在线程中显示Toast的时候,UI绘制的消息才会发送到线程的队列中,在消息分发的时候进行UI绘制。...但是需要注意的是,任务执行完毕之后,需要手动调用Looper.quitSafely()方法退出循环,否则线程一直不会结束退出。

    1.2K20

    Java并发学习之定时任务的几种玩法

    Java中创建和玩转定时任务 定时任务,在日常工作中,可以说是一个算是一个常见的需求场景,比如定时数据校验,数据报表输出,报警 0....4. spring的定时任务 spring方式就非常强大了,而且支持注解的配置方式,配置完毕,然后在方法上加一个注解,就可以实现定时执行了 常见的使用姿势 // 100ms后执行 @Scheduled...在5:15分进行校验,判断数据是否正常导入;校验完成之后,45分钟后即六点,将校验结果通知给owner 1...."); // 执行完毕,等待到6点发送报警 int min = Calendar.getInstance().get(Calendar.MINUTE);..."); // 执行完毕,等待到6点发送报警 int min = Calendar.getInstance().get(Calendar.MINUTE);

    1.7K100

    Python用subprocess的Popen来调用系统命令

    可是这两个命令过于简单,不能完毕一些复杂的操作,如给执行的命令提供输入或者读取命令的输出,推断该命令的执行状态,管理多个命令的并行等等。...这时subprocess中的Popen命令就能有效的完毕我们须要的操作。在这里对Popen予以简介。...參数preexec_fn仅仅在Unix平台下有效,用于指定一个可执行对象(callable object),它将在进程执行之前被调用。...Popen的方法: Popen.poll() 用于检查进程是否已经结束。设置并返回returncode属性。 Popen.wait() 等待进程结束。设置并返回returncode属性。...subprocess.call(*popenargs, **kwargs) 执行命令。该函数将一直等待到进程执行结束,并返回进程的returncode。文章一開始的样例就演示了call函数。

    1.8K20

    ABAP 模块化编程概念详解

    调用时候要指定目的地,目的地在SM59配置 3.更新函数 用于数据库数据更新 导入 参数名称: 以I_开头+参数名称 类型化: TYPE就行 关联类型: 就是你这个字段原表的参考数据类型 缺省值:提示 可选:是否为必须录入...出现异常会取消对Function的处理,系统返回到调用程序。...,那么,外部程序的实际变量的值也发生改变 值传并返回结果: 传递参数的方式同值传递相同,但在例程执行过程中,变量值不改变,而结束执行后,把变量的最终值返回 局部和全局变量 局部和全局变量: 全局变量...值传并返回结果 C:值传并返回结果 传递参数的方式同值传递相同,但在例程执行过程中,变量值不改变,而结束执行后,把变量的最终值返回。..."调用指定程序执行后可返回上一屏幕 宏 宏定义 宏(Macros)是一段独立的代码,能实现数据的运算与输出, 功能与例程类似,主要应用于同一程序中某些重复的运算,以简化代码 语法: DEFINE INCREMENT

    1.5K21

    Linux 进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)

    当管道中没有信息的话,从管道中读取的进程等待,直到另一端的进程放入信息。 当管道被放满信息的时候,尝试放入信息的进程等待,直到另一端的进程取出信息。当两个进程都终结的时候,管道也自动消失。 ?...当进程收到信号时,信号处理函数将像中断服务例程一样被调用,当从该信号处理函数返回时,控制被返回给主程序,并且继续正常执行。 但是,信号和中断有所不同。...这一点比较重要,因为进程检查是否收到信号的时机是:一个进程在即将从内核态返回到用户态时; 或者,在一个进程要进入或离开一个适当的低调度优先级睡眠状态时。...第二个要引起注意的是,如果要捕捉的信号发生于进程正在一个系统调用中时,并且该进程睡眠在可中断的优先级上(若系统调用未睡眠而是在运行,根据上面的分 析,该系统调用运行完毕后再处理信号), 这时该信号引起进程作一次...longjmp,跳出睡眠状态,返回用户态并执行信号处理例程

    2.4K30
    领券