para mi aplicación multiplataforma que han comenzado a usar Boost, pero no puedo entender cómo puedo implementar el código para reproducir el comportamiento de la sección crítica de Win32 o .Net de lock
.¿Cómo hago una sección crítica con Boost?
Quiero escribir un método Foo
que se puede llamar desde diferentes hilos para controlar las operaciones de escritura a campos compartidos. Se deben permitir llamadas recursivas dentro del mismo subproceso (Foo() -> Foo()).
En C# esta aplicación es muy simple:
object _synch = new object();
void Foo()
{
lock (_synch) // one thread can't be lock by him self, but another threads must wait untill
{
// do some works
if (...)
{
Foo();
}
}
}
Su recomendación es muy útil. He solucionado mi error, PERO tengo supresión de rendimiento. ¡más de 3 veces! = ((Antes de que la solución que solía unique_lock) –
Vie
¿Puede proporcionar ejemplos de código en el que utilizando recursos compartidos? También puedes ver este http://home.roadrunner.com/~hinnant/mutexes/locking.html#Shared. Tal vez Será útil. –
Trate de evitar el uso de bloqueo recursivo, puede ser moviendo la protección al alcance externo. Los mutexes recursivos pueden ser más lentos que los simples. – blaze