이 내용은 고객님의 설정 언어로 확인할 수 없습니다

이 내용은 다른 사용 가능한 언어로 표시됩니다. 고객님께서 사용하시는 브라우저에 텍스트 번역에 도움이되는 기능이 포함되어 있을 수 있습니다.

What Is a Semaphore?

Updated Aug 17, 2023

Reported In

Software

  • LabVIEW

Issue Details

What is a semaphore and how is it useful in LabVIEW?

Solution

A semaphore is a way to limit the number of tasks that can simultaneously operate on a shared, protected resource. A protected resource or critical section of code might include writing to global variables or communicating with external instruments. You can use semaphores to make your code thread-safe, and to prevent race conditions. A semaphore is similar to a mutex (Mutual exclusion object) in other programming languages. 

It is useful for protecting two or more critical sections of code that should not be called concurrently. Before entering a critical section, the thread must acquire a semaphore. If no thread is already in the critical section, the thread proceeds to enter that part of the diagram immediately. This thread must release the semaphore once the critical section is complete. Other threads that want to enter the critical section must wait until the first thread releases the semaphore.
 

Figure 1: The VIs on the Semaphore Palette (Programming » Synchronization » Semaphore)
 
 
To accomplish this, obtain a semaphore reference and then place the Acquire Semaphore and Release Semaphore VIs at the beginning and end, respectively, of each critical section. Then each critical section can acquire and release the semaphore one at a time to assure proper data control. At the end of the code use the Release Semaphore Reference VI.

Additional Information

Look for example programs in the LabVIEW shipping examples. Open LabVIEW » Help » Find Examples and search for semaphore in the search tab.