gpt4 book ai didi

windows - 谁是CreateTimerQueueTimer()设置的回调函数的调用线程?

转载 作者:行者123 更新时间:2023-12-03 11:11:19 26 4
gpt4 key购买 nike

我想这是创建计时器的线程,比如说A。但是我不知道如何确切地调用回调函数。假设计时器到期,然后会发生什么?当该线程获得时间片时会发生这种情况吗?如果是这种情况,我认为该函数应该由调度程序调用,或者在上下文最终切换到A之前应调用什么,那么我可以说A是调用者吗?

谢谢。

最佳答案

计时器回调也可以由池线程,专门管理计时器的线程或在创建线程的上下文中调用(创建线程旨在接受和处理“异步过程调用”)。 CTQT()中的标志参数控制计时器到期时的操作。

如果计时器事件由池线程或计时器管理器线程调用,则该线程将在到期时准备就绪,并且当有可用的内核运行时,它将在其自己的上下文中“立即”进行回调。如果需要,创建计时器的线程可以等待同步对象(事件或信号量),该对象可以由计时器回调(即,正常的线程间通信)发出信号。

如果计时器回调可以在收到某种信号的情况下执行回调,则只能在创建它的线程的上下文中执行。在使用这些计时器的情况下,APC被排队到正在创建的线程中,如果该线程在“可更改”的等待调用之一中被阻塞,它将立即准备就绪,并在有可用内核运行时运行。 APC运行后,将返回等待调用。如果等待调用不是SleepEx(),它将返回WAIT_IO_COMPLETION-通常被忽略的结果。如果在APC排队时线程没有等待,则直到该线程发出下一个等待调用时才执行该命令(显然-因为该线程必须关闭其他操作:)。

“如果是这种情况,我认为该函数应该由调度程序调用,或者在上下文最终切换到A之前应调用什么,那么我能说A是调用者吗?”不!

关于windows - 谁是CreateTimerQueueTimer()设置的回调函数的调用线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19759886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com