线程睡眠后被**运行在哪个CPU上
Hi All,问2个线程调度的问题
一.
线程A运行在CPU0上调用sleep_on睡眠在一个wait_queue_head_t上,另外一个线程B运行在CPU1上调用wake_up**线程A
请问**后的线程A是运行在之前挂起的CPU0上吗?
二.
线程A运行在CPU0上调用schedule_timeout让出CPU0,另外一个线程B运行在CPU1上调用wake_up_process**线程A
请问**后的线程A也是运行在之前挂起的CPU0上吗?
Thanks **是huan xing,这也是敏感词{:qq27:} 不一定,跟schedule_domain(例如numa)、wake_idle等因素有关系,会在local-cpu(调用wake-up的)和remote-cpu(被wake-up的)之间做选择。
简单的情况下,可以认为优先使用原来的cpu(其实也不绝对)。 **时会进行负载迁移的,看函数select_task_rq。
页:
[1]