SetThreadAffinityMask 设置的处理器关联是否也适用于子线程?
Does a processor affinity set by SetThreadAffinityMask also apply to children threads?
我有一个使用多个线程的应用程序,其中一个线程比其他线程对时间要求更高。我已经尝试过使用优先级,但发现 Windows 并不总是按照我想要的程度遵守优先级,有时允许优先级较低的线程长时间(50 毫秒以上)阻塞我的关键线程。为了解决这个问题,我正在考虑为每个线程设置处理器亲和力以限制非关键线程,这样它们就不能使用某些内核(比如内核#1 和#2),而关键线程将始终拥有这些内核(#1 和 #2)可用。
我的问题是,如果我通过 SetThreadAffinityMask() 为我的入口点线程设置一个处理器关联掩码,那么由该初始线程创建的后续线程是否会继承该关联掩码?还是我每次在整个系统中生成线程时都需要手动设置亲和力?
我可以确认在 Windows 10 上使用 std::thread 和 VS2015 创建线程时不会继承线程关联。
我有一个使用多个线程的应用程序,其中一个线程比其他线程对时间要求更高。我已经尝试过使用优先级,但发现 Windows 并不总是按照我想要的程度遵守优先级,有时允许优先级较低的线程长时间(50 毫秒以上)阻塞我的关键线程。为了解决这个问题,我正在考虑为每个线程设置处理器亲和力以限制非关键线程,这样它们就不能使用某些内核(比如内核#1 和#2),而关键线程将始终拥有这些内核(#1 和 #2)可用。
我的问题是,如果我通过 SetThreadAffinityMask() 为我的入口点线程设置一个处理器关联掩码,那么由该初始线程创建的后续线程是否会继承该关联掩码?还是我每次在整个系统中生成线程时都需要手动设置亲和力?
我可以确认在 Windows 10 上使用 std::thread 和 VS2015 创建线程时不会继承线程关联。