From: David S. <da...@we...> - 2005-09-07 13:06:15
|
> Hi, > > Are all calls to the user space file system > serialized? > > In other words, is it safe to have a global variable > that is touched by multiple functions? > > If not, I understand I will need to use locking. > > Thanks, > > Q Even if all the calls were serialized, you could still need locking. Locking doesn't just provide serialization and mutual exclusion, it ensures memory visibility. If you're using POSIX threads and want to have one thread read a memory allocation, even if you are sure it is after another thread has modified it, you still must ensure memory visibility by one of the specific methods POSIX provides. Otherwise the other thread could read a stale value (or, theoretically, any value) even if you are sure it runs after the modifying thread. To clarify, if you have: int i=0; int j=0; And one thread does: i=5; j=2; And another thread does: if(j==2) { if(i==0) bomb(); } There is no guarantee that 'bomb' will not be called. Serialization is not sufficient. DS |