Re: [APC-DEV] atomaticity/thread safeness of apc shared memory functions+mutexes

From: Date: Thu, 25 Dec 2008 11:35:40 +0000
Subject: Re: [APC-DEV] atomaticity/thread safeness of apc shared memory functions+mutexes
References: 1 2 3 4  Groups: php.apc.dev 
Request: Send a blank email to php-apc-dev+get-177@lists.php.net to get a copy of this message
Rasmus Lerdorf schreef:
Exception e wrote:
Rasmus Lerdorf schreef:
Yes, they are atomic and they are locked appropriately. You don't need any sort of mutex. This is shared memory. Generally we don't suggest running PHP in any sort of threaded environment though.
To respond to your last remark: php processes can be exectuted in parallel by Apache—at least this is my understanding. So if I need to work with multiple shared memory entries per request i still need mutexes in order to lock concurrent access to these pieces.
That's not multi-threading, that is multi-processing, and of course APC handles that correctly and locks appropriately. Multi-threading is when you have multiple threads of execution within the same process.
Yes, but do you mean that all shared memory entries are blocked for the duration of a process? Let's give me an example <?php $val1 = apc_fetch('val1'); // (#1) different process does: apc_store('val1', 34); $val2 = apc_fetch('val2'); echo $val1 + $val2; ?> From what I understand is that when the same code runs in a different process, the shared memory segment 'val1' can be changed on (#1) by that other process. So in fact I need two mutexes. But if all shared memory is locked for each process, than such a situation cannot happen. Did you really mean that? I hope you could clarify this.

« previous php.apc.dev (#177) next »