Articles of multithreading

C ++ termina chiamato senza un’eccezione triggers

Sto ottenendo un errore C ++ con il threading: terminate called without an active exception Aborted Ecco il codice: #include #include #include #include template class blocking_stream { public: blocking_stream(size_t max_buffer_size_) : max_buffer_size(max_buffer_size_) { } //PUSH data into the buffer blocking_stream &operator<<(TYPE &other) { std::unique_lock mtx_lock(mtx); while(buffer.size()>=max_buffer_size) stop_if_full.wait(mtx_lock); buffer.push(std::move(other)); mtx_lock.unlock(); stop_if_empty.notify_one(); return *this; } //POP data […]

Qual è il modo corretto di gestire gli eventi in C ++?

Ho un’applicazione che deve rispondere a determinati eventi nel modo seguente: void someMethodWithinSomeClass() { while (true) { wait for event; if (event == SomeEvent) { doSomething(); continue; } if (event == SomeOtherEvent) { doSomethingElse(); continue; } } } Questo sarebbe in esecuzione è un po ‘di thread. In alcuni altri thread, le operazioni avrebbero creato […]

Pthread_join non bloccante

Sto codificando l’arresto di un server multithread. Se tutto va come dovrebbe, tutti i thread escono da soli, ma c’è una piccola possibilità che un thread si blocchi. In questo caso sarebbe conveniente avere un join non bloccante quindi potrei fare. C’è un modo per fare un pthread_join non bloccante? Una sorta di join a […]

Il thread chiamante non può accedere a questo object perché ne possiede uno diverso. WPF

Ogni volta che aggiorno un’etichetta, ho ricevuto questo errore: il thread chiamante non può accedere a questo object perché lo possiede un thread diverso. Ho provato a invocare ma è fallito. Sto usando il modulo WPF. delegate void lostfocs(string st); private void imgPayment_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Thread t = new Thread(modi); t.Start(); } void […]

Comunicazione client / server di multithreading socket

Ho finito di scrivere un programma di comunicazione Client / Server Socket che funziona bene. Ora sto cercando di capire come farlo in modo che possa avere più connessioni Client al server contemporaneamente. Mi sono guardato intorno e sembra esserci più di un paio di modi per farlo. quindi sono venuto qui per chiederti aiuto […]

Come Threadpool riutilizza Thread e come funziona

I miei concetti di Multithreading sono deboli e cercano di imparare. In java quello che so è, non possiamo chiamare un thread più di una volta, cioè Thread t = new Thread(//Some Runnable); t.start() t.start() //Illegal and throw Exception at Runtime. Per quanto ne so, genera un’eccezione quando si chiama di nuovo t.start () perché […]

Qualche libreria C implementa i thread C11 per GNU / Linux?

Ci sono state molte domande sulla filettatura C11 e C11, ma non vedo una risposta definitiva da nessuna parte: Qualche libreria C implementa l’interfaccia di threading C11 utilizzabile su GNU / Linux? ad esempio, fornire “opzionale” e la libreria di supporto del thread come thrd_create() , dallo standard C11 vicino a p. 376. Idealmente, mi […]

È bool volatile per il controllo del thread considerato sbagliato?

Come risultato della mia risposta a questa domanda , ho iniziato a leggere la parola chiave volatile e ciò che il consenso è in merito. Vedo che ci sono molte informazioni a riguardo, alcune vecchie che ora sembrano sbagliate e molto nuove che dicono che non ha quasi nessun posto nella programmazione multi-thread. Quindi, vorrei […]

Come utilizzare invokeAll () per consentire a tutti i pool di thread di eseguire il proprio compito?

ExecutorService pool=Executors.newFixedThreadPool(7); List<Future> future=new ArrayList<Future>(); List<Callable> callList = new ArrayList<Callable>(); for(int i=0;i<=diff;i++){ String str="2013-"+(liDates.get(i).get(Calendar.MONTH)+1)+"-"+liDates.get(i).get(Calendar.DATE); callList.add(new HotelCheapestFare(str)); } future=pool.invokeAll(callList); for(int i=0;i<=future.size();i++){ System.out.println("name is:"+future.get(i).get().getName()); } Ora voglio che il pool invokeAll tutti i task prima di arrivare al ciclo for, ma quando invokeAll questo programma for loop viene eseguito prima di that invokeAll e lancia questa eccezione: […]

Perché lo stream parallelo non utilizza tutti i thread di ForkJoinPool?

Quindi so che se si usa il parallelStream senza un ForkJoinPool personalizzato, verrà utilizzato il forkJoinPool predefinito che per impostazione predefinita ha un thread in meno come i processori. Quindi, come affermato qui (e anche nell’altra risposta di questa domanda) per avere più parallelismo, devi: inviare l’esecuzione del stream parallelo al proprio ForkJoinPool: yourFJP.submit (() […]