Articles of multithreading

C ++ termina llamada sin una excepción activa

Estoy obteniendo un error de C ++ con subprocesamiento: terminate called without an active exception Aborted Aquí está el código: #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 […]

¿Console.WriteLine bloquea?

¿ Console.WriteLine bloquea hasta que la salida se haya escrito o se devuelva inmediatamente? Si se bloquea, ¿hay algún método para escribir una salida asíncrona en la consola?

Múltiples productores, solo consumidor

Tengo que desarrollar una aplicación de subprocesos múltiples, donde habrá múltiples hilos, cada hilo genera un registro de eventos personalizado y necesita guardarse en la cola guardada (no en Microsoft MSMQ). Habrá otro hilo que leerá los datos de registro de la cola y los manipulará con cierta información para guardar la información de registro […]

Sincronización de Java

Que es esto: synchronized (this) { // …some code… } ¿bueno para? (¿Podría escribir un ejemplo?)

¿Cómo hacer que un objeto COM .NET tenga un subproceso de apartamento?

Los objetos .NET son de subproceso libre por defecto. Si se clasifica a otro subproceso a través de COM, siempre se calculan para sí mismos, independientemente de si el subproceso del creador fue STA o no, e independientemente de su valor de registro ThreadingModel . Sospecho que agregan el Marshaler de hilos libres (más detalles […]

Cola de proceso con subprocesamiento múltiple o tareas

Tengo una aplicación de mensajes de telefonía en la que hay muchos mensajes que procesar. Debido a que los puertos del teléfono son limitados, el mensaje se procesará primero en primer lugar. Cada mensaje tiene un indicador ‘Confirmar’ que indica el que se procesa. Fue inicializado como falso por supuesto. Quiero poner todos los mensajes […]

Obtener un rastreo de otro hilo

En Linux, para obtener una traza inversa puede usar la llamada a la biblioteca backtrace (), pero solo devuelve la traza inversa del hilo actual. ¿Hay alguna forma de obtener un rastreo de otro hilo, suponiendo que sé que es TID (o pthread_t) y puedo garantizar que duerma? Parece que el proyecto libunwind (http://www.nongnu.org/libunwind/) puede […]

Ejecutores Java: ¿cómo puedo detener las tareas enviadas?

He enviado una tarea utilizando ejecutores y necesito que se detenga después de un tiempo (por ejemplo, 5 minutos). He intentado hacer esto: for (Future fut : e.invokeAll(tasks, 300, TimeUnit.SECONDS)) { try { fut.get(); } catch (CancellationException ex) { fut.cancel(true); tasks.clear(); } catch(ExecutionException ex){ ex.printStackTrace(); //FIXME: gestita con printstack } } Pero siempre obtengo un […]

¿WPF databinding Marshall cambia al subproceso UI?

Me acabo de dar cuenta de que al cambiar las propiedades enlazadas en mi ViewModel (MVVM) desde un hilo de trabajador en segundo plano no obtengo ninguna excepción y la vista se actualiza correctamente. ¿Esto significa que puedo confiar en la unión de datos wpf ordenando todos los cambios en el ViewModel al subproceso UI? […]

C # locking / deslocking manual

Tengo una función en C # que se puede llamar varias veces desde múltiples hilos y quiero que se haga solo una vez, así que pensé en esto: class MyClass { bool done = false; public void DoSomething() { lock(this) if(!done) { done = true; _DoSomething(); } } } El problema es _DoSomething lleva mucho […]