2

私のコンピューターでは、プロセスごとに 380 のスレッドが許可されていますが、これは私にとっては問題ありません。関数 sdfpthread_create() を 380 回呼び出しても問題ありません。ただし、連続して呼び出すと、エラー 11 (リソースが一時的に利用できません) が返されます。

明らかな解決策は pthread_exit () を使用することですが、私は問題を解決しませんでした。作成されるスレッドの制限は依然として 380 です。

スレッドを再利用するにはどうすればよいですか?



    #include <stdio.h>
    #include <string.h>
    #include <pthread.h>
    #include <stdlib.h>
    #include <unistd.h>


    void *doSomeThing()
    {
        sleep(99);
        pthread_exit(NULL);
    }

    int main(void)
    {
        pthread_t tid;
        int i;
        int err;

        /* Create threads */
        for (i=0; i<380; ++i)  {
            err = pthread_create(&tid, NULL, doSomeThing, NULL);
            if (err != 0)
                printf("\n1) Can't create thread :[%s]", strerror(err));
        }

        sleep(1);

        /* Reuse threads */
        for (i=0; i<5; ++i)  {
            err = pthread_create(&tid, NULL, doSomeThing, NULL);
            if (err != 0)
                printf("\n2) Can't create thread :[%s]", strerror(err));
        }

        exit(0);
    }


4

1 に答える 1

4

実際にスレッドの終了状態をクリーンアップするために呼び出すpthread_join(3)か、参加できないスレッドを作成する必要があります。

エディ 0:

て読んでください:

于 2013-02-04T16:57:36.713 に答える