Phalanger は pthread をサポートしていません。
clr_create_thread(callback [, parameters])関数または sbを介して .NET の代替を使用できます。C# で不足している pthread のサポートを実装する必要があります。
clr_create_threadただし、実際にはスレッドを作成しないため、少し誤解を招く名前です。代わりに、コールバックを受け取り、ThreadPoolで実行するようにスケジュールします。スレッド プールのスレッドは、コールバックが終了しても終了しないため、多少特殊です。代わりに、それらは後のリクエストで再利用されます (clr_create_threadコールバックの実行を再度呼び出すと、以前に使用したスレッドで終了する可能性があります)。そのため、スレッドは自発的に終了しないため、Joiningスレッドにはほとんど意味がありません。ThreadPoolただし、コールバックが終了するのを待ちたい場合は、他の .net 同期メカニズムを使用できます (AutoResetEventがWaitHandle::WaitAll重要な部分です)。
use System\Threading;
class ThreadTest
{
    public static function main()
    {
        (new self)->run();
    }
    public function run()
    {
        $that = $this;
        $finished = [];
        for ($i = 0; $i < 5; $i++) {
            $finished[$i] = new Threading\AutoResetEvent(false);
            clr_create_thread(function() use ($that, $finished, $i) {
                $that->inathread();
                $finished[$i]->Set();
            });
        }
        Threading\WaitHandle::WaitAll($finished);
        echo "Main ended\n";
    }
    public function inathread()
    {
        $limit = rand(0, 15);
        $threadId = Threading\Thread::$CurrentThread->ManagedThreadId->ToString();
        echo "\n thread $threadId limit: " . $limit . " \n";
        for ($i = 0; $i < $limit; $i++) {
            echo "\n thread " . $threadId . " executing \n";
            Threading\Thread::Sleep(1000);
        }
        echo "\n thread $threadId ended \n";
    }
}