What is the purpose of a semaphore in concurrent programming?
-
A
To allocate virtual memory pages to processes
-
B
To synchronize access to shared resources by controlling how many threads can access a section simultaneously
-
C
To schedule threads based on priority
-
D
To measure CPU utilization across cores