Fino a poco tempo fa ogni qual volta avevo a che fare con i thread lo facevo con poca cognizione di causa… ogni tanto mi era capitato di fare applicazioni che dovevano popolare una lista o aspettare un input, senza che il programma si bloccasse, ma non avevo mai approfondito il tema più di tanto.

amd dualcore

Un esempio del classico uso base dei Thread in C# è il seguente:

using System;
using System.Threading;

public class ClasseStupida
{

	public ClasseStupida() {}

	public void FaccioTanteCose()
	{
		for (int i = 0; i < 30; i++)
		{
			lock(this)
			{
				Console.WriteLine("");
				Thread.Sleep(10);
				Console.WriteLine(Thread.CurrentThread.Name + ":");
				Thread.Sleep(10);
				Console.WriteLine("Faccio la cosa " + i.ToString());
			}
			Thread.Sleep(500);
		}
		Console.WriteLine(Thread.CurrentThread.Name
				+ ":ho finito di fare tutte le cose! che bello!!");
	}

	public static void Main()
	{
		ClasseStupida classeStupida = new ClasseStupida();
		Thread threadStupido = new Thread(classeStupida.FaccioTanteCose);
		threadStupido.Name="ThreadStupido1";
		threadStupido.Start();
		Thread.Sleep(1000);

		Thread threadStupido1 = new Thread(classeStupida.FaccioTanteCose);
		threadStupido1.Name="ThreadStupido2";
		threadStupido1.Start();
		Thread.Sleep(1000);

		Thread threadStupido2 = new Thread(classeStupida.FaccioTanteCose);
		threadStupido2.Name="ThreadStupido3";
		threadStupido2.Start();

		threadStupido2.Join();
		Console.WriteLine("fuuuiiuuhhh! FINITO!");
	}

}

Conoscevo vagamente per sentito dire i mutex e le varie implicazioni sulla sincronizzazione dei thread… ma di certo non avevo idea di quanto grande e complessa fosse la programmazione di un’applicazione multithreading.
Ma a tutto c’è un rimedio! Soprattutto all’ignoranza: ed in questo caso il rimedio è stato un utilissimo blog di Joseph Albahari che oltre ad avere dedicato diversi post sui vari aspetti del multithreading e della sincronizzazione dei thread in c#, ha realizzato anche un utilissimo e-book! Se vi state imbattendo per la prima volta in questo campo, e volete conoscere tutti gli strumenti che c# mette a disposizione allora questo sito fa per voi!
Buon divertimento!
http://www.albahari.com/threading/


Se sei interessato a questo post, potresti anche provare a leggere:

    No related posts