Qual è l'effetto di chiamare Thread.CurrentThread.Join() e se/quando avrebbe senso chiamarlo?Quando Thread.CurrentThread.Join() ha senso?
risposta
Qual è l'effetto di chiamare Thread.CurrentThread.Join()
potrete bloccare l'esecuzione del thread corrente, e in modo efficace dead lock esso. Farà bloccare il thread corrente fino al termine del thread corrente, il che non accadrà mai.
e se/quando avrebbe senso chiamarlo?
Non ha senso farlo. Non dovresti mai chiamare questo metodo in questo modo.
Su un lato nota, dal momento che si sta utilizzando .NET 4, consiglio di evitare usando Thread.Join
in generale. L'utilizzo delle nuove classi /Task<T>
è di gran lunga più bello in molti modi, poiché è possibile allegare continuazioni (o chiamare sempre Task.Wait()
se è veramente necessario bloccare).
Nota a margine: confondete C# 5 (.NET 4.5) con C# 4 (.NET 4.0)? –
@JeppeStigNielsen No - 'Task' e' Task
@JeppeStigNielsen Vedere: http://msdn.microsoft.com/en-us/library/dd321424(v=vs.100).aspx –
No, CurrentThread.Join() non ha senso
Ciò potrebbe rendere la vostra fermata programma in esecuzione, rendendo il filo A attesa per filo Un per esempio.
Era davvero
CurrentThread.Join()
che avete visto nel codice vero e proprio - che tipo di dubbio, a meno che non si tratta di qualche trucco per evitare che altri thread di aderire al thread corrente - o era
CurrentThread.Join(someTimeout)
quest'ultimo è equivalente a
Thread.Sleep(someTimeout)
eccetto che l'adesione sul thread attuale consente messaggio di pompaggio per continuare se ci si trova in una situazione GUI/COM.
In realtà ha senso nel mondo di osservabile. Diciamo che hai un ascoltatore di coda in main e vuoi mantenere il thread principale in esecuzione per sempre. Invece di fare while (true) e inserire il codice nel loop, l'ultima riga è possibile scrivere questo. In questo modo il thread corrente sarà anche thread principale per altri thread generati all'interno dell'applicazione. Pensa ad esso come punto di ingresso per l'app.
- 1. Quando JavaScript == ha più senso di ===?
- 2. Quando SOAP ha più senso del REST?
- 3. in_array non ha senso
- 4. Scala: l'opzione [Booleano] ha senso?
- 5. Questa espressione Python ha senso?
- 6. Che senso ha specificare hibernate.jdbc.batch_size?
- 7. scala forall ed esiste output, ha senso
- 8. Ha senso sovrascrivere un metodo in un'interfaccia
- 9. Ha senso fare "try-finally" senza "catch"?
- 10. Che senso ha dare nomi ai costruttori
- 11. Risultato Ripetibilità Opencv non ha senso?
- 12. Perché `(stato == 1 && 3)` ha senso?
- 13. Tipo firme che non ha senso
- 14. Ha senso utilizzare un pool di attori?
- 15. Game Center: addRecipientsWithPlayerIDs ... Come ha senso?
- 16. Ha senso verificare automaticamente null in Java
- 17. Un sistema misto .net/sap ha senso?
- 18. La variabile statica constexpr ha senso?
- 19. Il multithreading ha senso per le operazioni legate all'IO?
- 20. Ha senso utilizzare variabili statiche nella funzione principale in C?
- 21. L'utilizzo di server Web di stato ha senso?
- 22. Ha senso tentare di aiutare JavaScript Garbage Collector?
- 23. PHP Problema _POST non ha senso. i valori stanno scomparendo?
- 24. Cosa ha più senso: char * string o char * stringa?
- 25. Ha senso usare la parola chiave inline con i modelli?
- 26. Ha senso per uguali e confronti Per essere incoerente?
- 27. La query media min/max-larghezza non ha senso grammaticale
- 28. Estensione heartbeat: ha senso consentire il carico utile arbitrario?
- 29. ConcurrentHashMap: che senso ha solo il blocco degli aggiornamenti?
- 30. Ha senso usare std :: uninitialized_fill() con qualsiasi allocatore?
hai letto la documentazione? –
Hai visto questo in qualche codice da qualche parte? È abbastanza orribile persino considerare di chiamare questo. –
Dovresti chiamare 't.Join()' su _another_ thread 't', non sul thread corrente. Vedere [la documentazione] (http://msdn.microsoft.com/en-us/library/95hbf2ta.aspx). –