我这里应用比较简单
我写死只创建了一个线程,这个线程就是runloop线程
我想知道所有任务会不会只在这个线程执行
代码是ziltoolkit的eventpoller.cpp
主线程 TID=44068
主线程创建 broker ,TID=44068
PID=4440 TID=44068 2020-2-26 17:3:37 219ms Final edubase.dll [ActiveSvr] "ActiveSvrBroker created" EMActSvr::ActiveSvrBroker::OnCreate ActiveSvrBroker.cpp line:80
主线程TID=44068 创建 eventpoller
PID=4440 TID=44068 2020-2-26 17:3:37 223ms Final edubase.dll [ActiveSvr] "EventPoller constructor thread 0" toolkit::EventPoller::EventPoller EventPoller.cpp line:61
主线程创建runloop TID=44068
PID=4440 TID=44068 2020-2-26 17:3:37 225ms Final edubase.dll [ActiveSvr] "44068 runLoop false registCurrentPoller true" toolkit::EventPoller::runLoop EventPoller.cpp line:270
事件循环线程 TID=26168
- 这里我写死,只创建一个线程,也就是只有一个runloop 线程做了所有操作
runloop 线程 TID=26168
PID=4440 TID=26168 2020-2-26 17:3:37 232ms Final edubase.dll [ActiveSvr] "26168 runLoop true registCurrentPoller true" toolkit::EventPoller::runLoop EventPoller.cpp line:270
- 可以发现,zltoolkit的runloop线程是 26168, 定时任务是在runloop线程被扫描和执行的
33669 是用户调用的线程
-
用户发送一个task的线程是33669
-
以下代码是在用户线程33669调用的
-
不是同步,所以不会在当前线程执行,也就是195 行不会走到
-
这个时候只是异步的加入到queue里,然后“唤醒主线程”
-
-
这个“主线程”应该就是runloop线程了,所以说async_l是切换线程的作用。
-
33669