En Windows/.NET, se puede usar un Mutex con nombre para sincronizar varios procesos. Desafortunadamente, Mono no soporta esto en Linux. Susnotas de lanzamiento dicen que Linux no es compatible con esta característica de Windows y no sería confiable emularla. Parece mejor evitar el truco propuesto para habilitarlo de todos modos.
Entonces, ¿cuáles son las alternativas sugeridas? Necesito hacer que mi programa sea seguro para ejecutarse simultáneamente, solo una pequeña sección debe sincronizarse con otras instancias.
Eventualmente, la aplicación debe implementarse en Ubuntu Linux con Mono 2.10, pero para la prueba, sería muy apreciado si también funciona en Windows 7 con .NET 4.
ACTUALIZAR:
Intente consultar http://aakinshin.net/en/blog/dotnet/namedmutex-on-mono/
ANTIGUO:
Mono no admite ningún IPC nativo de Windows. Por lo tanto, no tiene, por ejemplo, Named Pipes o Mutexes.
Pero para sincronizar subprocesos en el mismo proceso, puede usar la clase Monitor explícitamente (también se usa para bloquear).
Para simplemente notificar otro proceso , puede intentar usar Unix Domain Sockets .
Verifique la clase UnixEndPoint para eso. Uno de los beneficios es que puede especificarle un nombre (como para un semáforo con nombre, por ejemplo).
También puede intentar emular Mutex usando su propio archivo. Intente obtener acceso exclusivo a un archivo propio específico. Mientras tenga ese acceso, estará en una sección crítica.