¿Cómo Mutex a través de una red?

Tengo una aplicación de escritorio que se ejecuta en una red y cada instancia se conecta a la misma base de datos.

Entonces, en esta situación, ¿cómo puedo implementar un mutex que funcione en todas las instancias en ejecución que están conectadas a la misma base de datos?

En otras palabras, no quiero que dos o más instancias ejecuten la misma función al mismo tiempo. Si uno ya está ejecutando la función, las otras instancias no deberían tener acceso a ella.

PD: la transacción de la base de datos no se resolverá, porque la función que no quiero poner en mutex no usa la base de datos. He mencionado la base de datos solo porque se puede utilizar para intercambiar información entre las instancias en ejecución.

PS2: la función tarda aproximadamente unos 30 minutos en completarse, por lo que si una segunda instancia intenta ejecutar la misma función, me gustaría mostrar un mensaje agradable que no se puede realizar ahora porque la computadora 'X' ya está ejecutando esa función .

PS3: la función debe procesarse en la máquina cliente, por lo que no puedo usar procedimientos almacenados.

Respuestas a la pregunta(6)

Su respuesta a la pregunta