Articles of multithreading

Esempio di mutex / tutorial?

Sono nuovo nel multithreading e stavo cercando di capire come funzionano i mutex. Ho fatto un sacco di ricerche su google e ho trovato un tutorial decente , ma ha lasciato alcuni dubbi su come funziona, perché ho creato il mio programma in cui il blocco non funzionava. Una syntax assolutamente non intuitiva del mutex […]

Thread Start con parametri

Come si avvia una discussione con parametri in C #?

Come attendere la cancellazione di un BackgroundWorker?

Considera un metodo ipotetico di un object che fa cose per te: public class DoesStuff { BackgroundWorker _worker = new BackgroundWorker(); … public void CancelDoingStuff() { _worker.CancelAsync(); //todo: Figure out a way to wait for BackgroundWorker to be cancelled. } } Come si può aspettare che un BackgroundWorker sia fatto? In passato le persone hanno […]

È considerato accettabile non chiamare Dispose () su un object Task TPL?

Voglio triggersre un’attività per l’esecuzione su un thread in background. Non voglio aspettare il completamento delle attività. In .net 3.5 avrei fatto questo: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); In .net 4 il TPL è il modo suggerito. Il modello comune che ho visto consigliato è: Task.Factory.StartNew(() => { DoSomething(); }); Tuttavia, il metodo StartNew() restituisce […]

BackgroundWorker RunWorkerCompleted Event

L’applicazione My C # ha diversi operatori in background. A volte un lavoratore in background ne licenzierà un altro. Quando viene completato il primo background worker e viene RunWorkerCompleted evento RunWorkerCompleted , su quale thread verrà RunWorkerCompleted quell’evento, l’interfaccia utente o il primo worker in background da cui RunWorkerAsync stato chiamato RunWorkerAsync ? Sto usando […]

Accesso all’interfaccia utente (principale) Thread sicuro in WPF

Ho un’applicazione che aggiorna il mio datagrid ogni volta che un file di registro che sto guardando viene aggiornato (Aggiunto con nuovo testo) nel modo seguente: private void DGAddRow(string name, FunctionType ft) { ASCIIEncoding ascii = new ASCIIEncoding(); CommDGDataSource ds = new CommDGDataSource(); int position = 0; string[] data_split = ft.Data.Split(‘ ‘); foreach (AttributeType at […]

Come funziona sincronizzato in Java

Innanzitutto, ecco un esempio : public class Deadlock { static class Friend { private final String name; public Friend(String name) { this.name = name; } public String getName() { return this.name; } public synchronized void bow(Friend bower) { System.out.format(“%s: %s has bowed to me!%n”, this.name, bower.getName()); bower.bowBack(this); } public synchronized void bowBack(Friend bower) { System.out.format(“%s: […]

Come posso impostare l’affinità del processore in .NET?

Possiamo impostare due thread o due task da eseguire con affinità di processore diverse in un’applicazione C #? Ho letto su SetThreadAffinityMask ma non ho trovato alcun esempio di come dovrebbe essere usato. In alternativa, esiste un modo per TPL (Task Parallel Library) per eseguire due thread / task con priorità alta per utilizzare il […]

Esegui attività in background nell’applicazione WPF

Esempio private void Start(object sender, RoutedEventArgs e) { int progress = 0; for (;;) { System.Threading.Thread.Sleep(1); progress++; Logger.Info(progress); } } Qual è l’approccio consigliato (TAP o TPL o BackgroundWorker o Dispatcher o altri) se voglio Start () non bloccare il thread ui può fornire rapporti sui progressi può essere cancellato supporto multithread e multicore

I numeri primi di Eratostene sono più veloci e sequenziali che contemporaneamente?

Attualmente sto scrivendo un programma che genera prima i numeri primi dal Sieve di Eratostene in sequenza, quindi in modo concorrente. La versione concorrente dell’algoritmo dovrebbe essere più veloce di quella sequenziale, ma nel mio caso la versione concorrente è di ca. 10 volte più lento. Mi chiedo dove sto mettendo il lavoro extra sui […]