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

> 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

Reply via email to