Shane Caraveo wrote:
> Alan Knowles wrote: > >> Im looking at adding threading to php, (for the cgi/cli stuff).. >> >> The story so far: >> >> I've created an extension which diverts all zend_execute calls into >> the extension -> phpthreads_execute. >> this function is a copy of zend_execute with a few modifications >> - to copy & restore things like EG(active_symbol_table); >> - to malloc lock and unlock the execute loop and release on each opcode. > > > Ouch. While it's an interesting way to deal with the issue, I think > this will be way too slow, and maintenance will be hard (keeping up > with changes in the real zend_execute, and zend engine in general). Plan A was just to get something that worked - even if it was crude and nasty... :) Agreed - there are lots of issues with this method.. timesliceing and yeilding if the application is locked most of the time is problematic. > As in a couple other responses, the way this needs to be implemented > has been hashed out, largely based on how the same problem is solved > in Perl (there is a remarkable amount of simularity between PHP and > Perl at some levels). If you're interested, lets talk. - do we have to do it based on perl - their web site is as easy to comprehend as the language - I spent 1/2 hour trying to find any source code or CVS server and failed :) ok - hints would be good.. - pythons source for threading has a url... I'm guessing this generaly means a) turning on php's tsrm stuff. b)on the pthread_create(): copy the memory address of the function/class tables between threads. (eg. so they share the same data). malloc lock any changes to the function/class table = eg. the compiler calls.. do the call_user_func_ex roughly as per before... c) work out a sharing method for variables... regards alan > > > Shane > > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php