在没有列表的情况下使用 Parallel.ForEach
Use Parallel.ForEach without lists
我想使用Parallel.ForEach
作为多线程方法来执行代码而不需要列表或文件读取。
我想这样做:
Parallel.ForEach
{
Console.WriteLine("test");
}
所以它会不停地写test
。我将使用 IF
语句来检查它是否应该停止。
可以这样使用Parallel.ForEach
吗?
如有任何帮助,我们将不胜感激。
谢谢!
多线程这个是不会有任何效果的,但是如果你坚持:
bool _shouldStop { get; set; } = false;
bool _shouldStopSecondThread { get; set; } = false;
public static Main(string[] args)
{
Thread thread = new Thread(print);
Thread anotherThread = new Thread(anotherPrint);
thread.Start();
anotherThread.Start();
//your code here while the worker writes "Test" to console
if(condition) {
_shouldStop=true;
_shouldStopSecondThread=false;
}
}
//...
public void print()
{
while (!_shouldStop)
{
Console.WriteLine("test");
}
Console.WriteLine("worker terminated");
}
public void anotherPrint()
{
while (!_shouldStopSecondThread)
{
Console.WriteLine("test");
}
Console.WriteLine("worker terminated");
}
你想要的不是很清楚,但你可以试试这个方法:
var parallelDrege = Environment.ProcessorCount;
while (true)
{
Parallel.For(0, parallelDrege, t =>
{
Console.WriteLine("test");
});
}
将 parallelDegre 设置为所需的值,并注意每个批次都将并行处理,但批次与批次之间是一个顺序过程。
希望对您有所帮助!
我想使用Parallel.ForEach
作为多线程方法来执行代码而不需要列表或文件读取。
我想这样做:
Parallel.ForEach
{
Console.WriteLine("test");
}
所以它会不停地写test
。我将使用 IF
语句来检查它是否应该停止。
可以这样使用Parallel.ForEach
吗?
如有任何帮助,我们将不胜感激。
谢谢!
多线程这个是不会有任何效果的,但是如果你坚持:
bool _shouldStop { get; set; } = false;
bool _shouldStopSecondThread { get; set; } = false;
public static Main(string[] args)
{
Thread thread = new Thread(print);
Thread anotherThread = new Thread(anotherPrint);
thread.Start();
anotherThread.Start();
//your code here while the worker writes "Test" to console
if(condition) {
_shouldStop=true;
_shouldStopSecondThread=false;
}
}
//...
public void print()
{
while (!_shouldStop)
{
Console.WriteLine("test");
}
Console.WriteLine("worker terminated");
}
public void anotherPrint()
{
while (!_shouldStopSecondThread)
{
Console.WriteLine("test");
}
Console.WriteLine("worker terminated");
}
你想要的不是很清楚,但你可以试试这个方法:
var parallelDrege = Environment.ProcessorCount;
while (true)
{
Parallel.For(0, parallelDrege, t =>
{
Console.WriteLine("test");
});
}
将 parallelDegre 设置为所需的值,并注意每个批次都将并行处理,但批次与批次之间是一个顺序过程。
希望对您有所帮助!