Articles of multithreading

Perché Java non vede il valore aggiornato da un altro thread?

Si prega di guardare questo codice (tratto dal libro di Java efficace) import java.util.concurrent.TimeUnit; public class Main { private static boolean stopReq; public static void main(String[] args) throws InterruptedException { Thread bgw = new Thread(new Runnable() { public void run(){ int i = 0; while(!stopReq){ i++;} } }); bgw.start(); TimeUnit.SECONDS.sleep(1); stopReq = true; } } […]

Prolog findall Implementation

Sono stato incaricato di implementare una versione di findall in Prolog senza utilizzare alcun built-in di Prolog tranne che per not e cut, quindi fondamentalmente in puro Prolog. Sto cercando di cercare un albero per tutti i discendenti diretti e restituire i risultati in un elenco parent(a, b). parent(b, c). parent(b, d). parent(e, d). Quello […]

Quale thread esegue il codice dopo la parola chiave `await`?

Lasciatemi solo pubblicare un semplice esempio: private void MyMethod() { Task task = MyAsyncMethod(); task.Wait(); } private async Task MyAsyncMethod() { //Code before await await MyOtherAsyncMethod(); //Code after await } Diciamo che eseguo il codice sopra in una singola app a thread, come un’app console. Sto avendo difficoltà a capire come il codice //Code after […]

Animazione di caricamento WPF su un thread dell’interfaccia utente separato? (C #)

Va bene, ho un’animazione di caricamento che viene eseguita mentre è inserito un DataTable di grandi dimensioni per far sapere all’utente che il programma non è stato bloccato. Ho l’animazione che funziona bene, ma si blocca mentre il DataTable si aggiorna pure. C’è un modo per avere più thread dell’interfaccia utente, in modo che l’animazione […]

c ++ code di lavoro con blocco

Questa domanda dovrebbe essere un po ‘più semplice dei miei ultimi. Ho implementato la seguente coda di lavoro nel mio programma: Pool.h: // tpool class // It’s always closed. :glasses: #ifndef __POOL_H #define __POOL_H class tpool { public: tpool( std::size_t tpool_size ); ~tpool(); template void run_task( Task task ){ boost::unique_lock lock( mutex_ ); if( 0 […]

Lock xchg ha lo stesso comportamento di mfence?

Quello che mi chiedo è se lock xchg avrà un comportamento simile a mfence dal punto di vista di un thread che accede a una locazione di memoria che viene mutata (lasciamo solo dire a caso) da altri thread. Garantisce che ottengo il valore più aggiornato? Di memoria leggere / scrivere le istruzioni che seguono […]

Gestione degli eventi dal server COM out-of-proc nell’applicazione STA gestita

Apparentemente, i gestori gestiti per eventi, provenienti da un server COM out-of-process non gestito, vengono richiamati su un thread di pool casuale, anziché sul thread STA principale (come mi aspetterei). L’ho scoperto mentre rispondevo a una domanda sull’automazione di Internet Explorer . Nel seguente codice, DocumentComplete viene generato su un thread non UI (quindi “Event […]

Generare un dump del thread Java senza riavviare.

Mi piacerebbe creare un thread che tiene traccia dell’utilizzo della memoria e dell’utilizzo della CPU. Se l’applicazione raggiunge un livello elevato, voglio generare un dump dell’heap o un dump del thread. C’è un modo per generare un runtime del dump del thread senza riavviare?

Come posso condividere un object mutabile tra i thread?

Sto cercando di condividere un object mutabile tra i thread in Rust usando Arc , ma ottengo questo errore: error: cannot borrow immutable borrowed content as mutable –> src/main.rs:13:13 | 13 | shared_stats_clone.add_stats(&stats); | ^^^^^^^^^^^^^^^^^^ Questo è il codice di esempio: use std::thread; use std::sync::Arc; fn main() { let mut total_stats = Stats::new(); let mut […]

C ++ 11 std :: mutex in Visual Studio 2012 deadlock quando bloccato da DllMain ()

Vedo un deadlock con std::mutex quando il mutex è bloccato da DllMain() Di seguito è riportato un caso di test DLL minimo che presenta il problema per me. Il mio codice effettivo esegue il blocco mutex perché utilizza funzioni membro utilizzabili anche al di fuori dell’inizializzazione durante la normale funzione. Penso che il problema sia […]