On Thu, 2002-08-01 at 08:04, [EMAIL PROTECTED] wrote: > On 31 Jul 2002, Jason T. Greene wrote: > > > Instead of mutexing the entire interpreter to death, why don't you try > > creating multiple interpreters (each in a thread), and then come up with > > a sharing mechanism. > > Sounds like duplication some other thing :) > > Derick
parse error on line 1 : ) huh? -Jason > > > On Wed, 2002-07-31 at 03:57, 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. > > > > > > I've started testing the phpthreads_create($callback); - it appears to > > > work ok, execept it segfaults on completion.. - trying to reduce > > > refcounts somewhere. > > > > > > The fireup code looks something like this.. > > > > > > void phpthreads_create(void *ptr) { > > > zval myretval; > > > zval *callback = (zval *) ptr; > > > > > > if (!call_user_function( EG(function_table), NULL, callback, > > > &myretval, 0, NULL TSRMLS_CC )) { > > > zend_error(E_ERROR, "Problem Starting thread with > > > callback"); > > > } > > > > > > pthread_exit(NULL); > > > > > > > > > } > > > /* {{{ proto string phpthreads_thread(string function) > > > Return a string to confirm that the module is compiled in */ > > > PHP_FUNCTION(phpthreads_create) > > > { > > > > > > zval *callback; > > > pthread_t thread; > > > > > > if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", > > > &callback) == FAILURE) { > > > return; > > > } > > > pthread_create( &thread, NULL, (void *) phpthreads_create, > > > (void*) callback); > > > RETURN_TRUE; > > > } > > > > > > and the backtrace of the simple threaded test looks like this.. > > > 0x08128f08 in _zval_ptr_dtor (zval_ptr=0x81b5ce8) at > > > /usr/src/php/php4/Zend/zend_execute_API.c:275 > > > 275 (*zval_ptr)->refcount--; > > > (gdb) bt > > > #0 0x08128f08 in _zval_ptr_dtor (zval_ptr=0x81b5ce8) at > > > /usr/src/php/php4/Zend/zend_execute_API.c:275 > > > #1 0x424ceba2 in ?? () > > > #2 0x424c7c92 in ?? () > > > #3 0x08130588 in zend_execute_scripts (type=8, retval=0x0, > > > file_count=3) at /usr/src/php/php4/Zend/zend.c:810 > > > #4 0x08110abd in php_execute_script (primary_file=0x40006c71) at > > > /usr/src/php/php4/main/main.c:1398 > > > #5 0x08110138 in php_module_shutdown () at > > > /usr/src/php/php4/main/main.c:1058 > > > #6 0x2e325f43 in ?? () > > > > > > does anyone want to suggest what might be missing - is it worth putting > > > this into pecl - and does someone what to lend a hand?? > > > > > > regards > > > alan > > > > > > > > > > > > > > > > > > > > > -- > > > PHP Development Mailing List <http://www.php.net/> > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > > > > > > -- > > PHP Development Mailing List <http://www.php.net/> > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > --------------------------------------------------------------------------- > Did I help you? http://www.derickrethans.nl/link.php?url=giftlist > Frequent ranting: http://www.derickrethans.nl/ > --------------------------------------------------------------------------- > PHP: Scripting the Web - [EMAIL PROTECTED] > All your branches are belong to me! > SRM: Script Running Machine - www.vl-srm.net > --------------------------------------------------------------------------- > > > -- > PHP Development Mailing List <http://www.php.net/> > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php