그래서 멀티 스레딩 나는 몇 가지 질문을 제기 작은 프로그램을 구축하고 내가 어떤 도움 :) 여기내가의 기초를 이해하기 위해 노력하고있어
감사 할 것
class Program
{
public static int count;
public static int max;
static void Main(string[] args)
{
int t = 0;
DateTime Result;
Console.WriteLine("Enter Max Number : ");
max = int.Parse(Console.ReadLine());
Console.WriteLine("Enter Thread Number : ");
t = int.Parse(Console.ReadLine());
count = 0;
Result = DateTime.Now;
List<Thread> MyThreads = new List<Thread>();
for (int i = 1; i < 31; i++)
{
Thread Temp = new Thread(print);
Temp.Name = i.ToString();
MyThreads.Add(Temp);
}
foreach (Thread th in MyThreads)
th.Start();
while (count < max)
{
}
Console.WriteLine("Finish , Took : " + (DateTime.Now - Result).ToString() + " With : " + t + " Threads.");
Console.ReadLine();
}
public static void print()
{
while (count < max)
{
Console.WriteLine(Thread.CurrentThread.Name + " - " + count.ToString());
count++;
}
}
}
나는 몇 가지 테스트를 실행하여이 확인 : 작은 프로그램입니다
내가 최대 수 (100)를 만든, 그리고 가장 빠른 실행 시간이 80 % 더 빠른 2 개 스레드 것으로 보인다 10 개의 스레드가있는 시간보다질문 :
1) 스레드 4-10도 한 번 인쇄되지 않습니다, 어떻게 할 수 있습니까?
2) 더 많은 스레드가 더 빠르지 않아야합니까?
나는 최대 숫자 10000을 만들고 인쇄를 사용하지 않습니다.
이 구성을 사용하면 5 개의 스레드가 가장 빠른 것 같습니다.
왜 첫 번째 확인에 비해 변경이 있습니까?
또한이 구성 (인쇄 사용)에서는 모든 스레드가 몇 번 인쇄됩니다. 몇 개의 스레드 만 인쇄되는 첫 번째 실행과 다른 이유는 무엇입니까?
모든 스레드를 하나씩 인쇄하는 방법이 있습니까? 한 줄이나 그런 식으로?
는 당신의 도움을 주셔서 대단히 감사합니다 :)
스레드를 직접 사용하지 마십시오. 반 직관적 인 것처럼 보일지 모르지만 나를 믿으십시오 : 그들은 당신을 미치게 할 것입니다. 내가 당신이라면 C#의 TPL (Task Parallel Library)을 살펴볼 것입니다. –
[동기화] (http://en.wikipedia.org/wiki/Synchronization_%28computer_science%29)에 대한 간략한 개요. – ChaosPandion
이러한 종류의 테스트는 성능 문제를 이해하는 데 적합하지 않습니다. 독서를 많이해야합니다. –