我编写的应用程序(在 C# 中)的中心过程可能涉及从磁盘文件中读取许多数据,然后处理这些读取数据。然后通过 将数据写入BinaryWriter
相同的输出文件。
这个过程通常很长,所以我想,如果它在多核机器上运行,它可以为每次读取最多内核 x 处理器线程实例化一个线程。每个人都会处理数据,然后将其写出。除了BinaryWriter
.
我注意到,当我的机器上的 4 核 taskmgr 应用程序说它正在使用 25% 的 CPU 时,我猜它正在使用其中一个内核的 100%,并且应用程序可能会从使用另一个内核中受益匪浅3核也是。
如果我使用一个类Working
和一个函数Working.work()
来进行处理,并且我有四个内核可以使用(当然这 4 个不会被硬编码;我会询问我有多少个并使用这个数字我会做什么?
目前我有类似的东西:
Working working = new Working();
while (bytesRead = binaryReader(ref buffer,0,bytesToRead) != 0)
{
work.buffer = buffer;
working.work();
binaryWriter(buffer,0,buffer.Length);
}
将这一切转移到一个线程似乎会有所帮助。但我必须知道线程何时完成,以便新读取可以在线程上。