我的c++库用pthread创建了一个线程。在一个独立的应用程序中使用我的库很好,但是在php扩展中使用它时。
函数永远不会返回。

void* threadloop(void * param)
{
    zend_printf("B\n");
}
PHP_FUNCTION(create_thread)
{
    pthread_t othread;
    pthread_create (&othread, NULL, threadloop, NULL);
    zend_printf("A\n");
}

“B”从未打印过。
我该怎么做?
谢谢!

最佳答案

新创建的线程打印和进程终止之间存在竞争条件。您需要某种同步,例如在允许进程终止之前连接线程。(使用sleep可以演示问题,但决不要使用sleep作为线程同步的一种形式。)

关于php - PHP扩展(在C++中)中的pthread_create函数从不返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14366886/

10-10 02:49