Each time you start your EXE you will get a Unique GetCurrentProcessID() so using your code each EXE will have a Different Unique named Semaphore with a limit of 3. To work you need the same name for the Semaphore in every EXE, unless I missunderstand?