|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2001-11-21 18:44 UTC] mfischer@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Nov 05 18:00:01 2025 UTC |
I've created a wrapper extension for PHP to include my c++ library in as a shared module. My c++ library create a thread with pthread_create somewhere in the code. Using my library inside a stand-alone application works great, but when using it in PHP extension. The function never returns. I compiled PHP with these options --with-apxs --without-mysql I hadto disable GetRUsage to be able to compile PHP. So PHP is an Apache Module. I have Pentium 200Mhz with 92MB Linux 2.4.9 with glibc 2.1. In fact, only in the main thread (I suppose to be the main thread) the pthread_create function does not returns. The child thread is create, and this child can create sub thread and their call to pthread_create returns. The problem can be easily reproduce by adding a pthread_create(&thread_id, NULL, threadloop, NULL); directly in an extension function. I mean by extension function the function beginning with PHP_FUNCTION. Example: void* threadloop (void*arg) { //This line is execute after pthread_create } PHP_FUNCTION(test) { pthread_t othread; pthread_create (&othread, NULL, threadloop, NULL); //The execution never comes here } --test.php <HTML> <BODY> <?php test(); //Script hang on previous line ?> </BODY> </HTML> I would like to know if it's a bug in linux pthread implementation or in PHP.