By the way, if we do end up making this kind of thing mainstream we should 
probably use APR (or another library) for thread abstraction. I wouldn't 
want to do all of that work over.

Andi

At 04:29 PM 8/3/2002 +0800, Alan Knowles wrote:
>Ok, had a play with this
>updated copy on
>http://docs.akbkhome.com/threads.tgz
>
>added a few of pthreads calls to TSRM.c
>
>did most of the testing without this abstraction layer - just to see if I 
>could get it to work.
>
>used php_exectute_script, rather than getting clever and copying the 
>function/class hashtables.
>
>results:
>
>It worked (with a few caveats - that are just a matter of getting to know 
>threading better)...
>
>some of the issues:
>-if the child thread finishes before the main one - then the main one 
>needs to wait somehow..
>** FIX = probably need to keep a count of threads that are running and 
>block at MSHUTDOWN on the main thread if stuff is still going.
>-the child thread needs to have the modules functions loaded before it 
>starts running really - otherwise you get intermitant 'functions not 
>available' if you dont dl() the module in the child thread.
>** FIX = I need to look at the pthreads equivalant for 
>tsrm_wait_event(thread.start_event,TSRM_INFINITE); will be.. this should 
>make sure that the main thread doesnt do anything while the main thread is 
>starting up..
>
>
>- php_request_shutdown(NULL); calls the MSHUTDOWN for all modules - a good 
>example of where this cause trouble is the ext/standard/string.c 
>MSHUTDOWN, which has a static mutex that is freed. (and would be freed 
>twice when the main thread finishes) -
>hence  php_request_shutdown(), probably doesnt want to be called on a 
>thread completion..
>** FIX = not sure? - does this need fixing or should we just ignore 
>php_request_shutdown......
>
>due to the nature of thread scheduling, you dont get anything like '1 
>opcode from thread A, 1 opcode from thread B', more like about 30-40 
>opcodes randomly from each thread..
>
>regards
>alan
>
>
>
>Shane Caraveo wrote:
>
>>Here is a *very* rough peice of code for starting a thread.  It should 
>>get across the idea of how I am thinking threads need to be started, but 
>>it doesn't work (I haven't even tried to run it).  More importantly 
>>though, as a starter, is getting an api into TSRM that will support the 
>>abstraction of any thread calls.  I'm not realy concerned with shared 
>>variables at this point, since I think there is a chunk of work to do in 
>>just getting threads to work.
>>
>>I'm not mailing this onto the list, since I'm sure not too many people 
>>want to get attachments.
>>
>>Shane
>>
>
>
>
>
>--
>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

Reply via email to