基本上我有一个 Task 和一个 Thread 类,我创建的线程数量等于物理内核(或逻辑内核,因为在 Intel CPU 内核上它们是计数的两倍)。
所以基本上线程从任务列表中获取任务并执行它们。但是,我必须确保一切都是安全的,并且多个线程不要尝试一次执行相同的任务,当然这会带来额外的开销(和头痛) .
我将任务功能放在线程中是什么意思?我的意思是 - 而不是 4 个线程从 200 个任务池中抓取任务,为什么不是 200 个线程以 4 x 4 为一组执行,基本上我不需要同步任何东西,不锁定,什么都没有。当然,我不会在整个运行时创建线程,只是在初始化时。
这种方法有什么优缺点?我可以忽略的一个问题是 - 因为我只在初始化时创建线程,所以它们的数量是固定的,而对于任务,我可以继续在任务池中转储更多任务。