Semaphores can be used as mutexes.....
But ther is a much easier way to do this!
An "action engine" in LV is a VI that will operate in a manner that is controlled by the called. They can be of varying complexity but a simple version can be developed by using an "enum" to control the "action" (i.e. Read, Write, R/W, etc). Each action being realized as a uniue case of a case structure that is driven by the enum.
How this is simpler:
Unless you specify otherwise, LV VI's are non-reentrant. In LV this means that the VI can only be executed by one thread of code at a time.
If the VI is being used by one thread and another thread attempts to use it, the second thread will stall until the first completes.
Behind the scenes LV uses mutexes to control access to the sub-VI.
So...
If you create an action engine that performs all of your R/W work and use it as the only method for touching the resours in question, then LV will do all of the mutex work.
Now if you really want to do it the way it is done in C, then you should look at the semaphore VI's.
I hope you really do not want to do that. If you do, post some follow-up Q's after reviewing those VI's.
Trying to help,
Ben