私はマルチスレッド化に全く新しいです。私はマルチスレッドにしたい機能は、単に、結果にConsole.WriteLineをCの入力リストでのマルチスレッド化
クラスプログラム を5によって数を多機能である私は、1から100までの番号のリストを持っている簡単なテスト 上で動作するようにしようとしています{ public staticリストデータ=新しいリスト(); public static void Main(文字列[] args) { 新しいプログラム()。run(); foreach(データ内のint型) { Console.WriteLine(d); }
}
int multiply (int a){
return 5 * a;
}
void run()
{
int threadCount = 5;
Task[] workers = new Task[threadCount];
Task.Factory.StartNew(consumer);
for (int i = 0; i < threadCount; ++i)
{
int workerId = i;
Task task = new Task(() => worker(workerId));
workers[i] = task;
task.Start();
}
for (int i = 0; i < 100; ++i)
{
Console.WriteLine("Queueing work item {0}", i);
inputQueue.Add(i);
Thread.Sleep(50);
}
Console.WriteLine("Stopping adding.");
inputQueue.CompleteAdding();
Task.WaitAll(workers);
outputQueue.CompleteAdding();
Console.WriteLine("Done.");
Console.ReadLine();
}
void worker(int workerId)
{
Console.WriteLine("Worker {0} is starting.", workerId);
foreach (int workItem in inputQueue)
{
int b= multiply(workItem);
data.Add(b);
Console.WriteLine("Worker {0} is processing item {1}." ,workerId,b);
Thread.Sleep(100); // Simulate work.
outputQueue.Add(workItem); // Output completed item.
}
Console.WriteLine("Worker {0} is stopping.", workerId);
}
void consumer()
{
Console.WriteLine("Consumer is starting.");
foreach (var workItem in outputQueue.GetConsumingEnumerable())
{
Console.WriteLine("Consumer is using item {0}", workItem);
Thread.Sleep(25);
}
Console.WriteLine("Consumer is finished.");
}
BlockingCollection<int> inputQueue = new BlockingCollection<int>();
BlockingCollection<int> outputQueue = new BlockingCollection<int>();
}
質問とは何ですか? –
これを読むことを試みなさいhttp://www.albahari.com/threading/ –
私は1から100までの番号のリストがある。私は同じ方法を動かす5つのスレッドを作りたいと思う。このメソッドは単純に5を掛けてC# –