线程似乎永远不会退出

时间:2014-11-04 18:24:14

标签: c pthreads

在我的main()中,我创建了一个名为startup()的线程,该线程应该初始化所有内容并启动一个名为callback()的新线程,该线程应该处理I / O和东西。我的问题是callback()永远不会退出,它似乎处于循环中,当我按 Ctrl + C 时,它退出并最终执行放在其他线程中的代码。我无法弄清楚什么不能正常工作,所以我希望得到一些帮助。

void *startup()
{
/*... SOME OTHER CODE FOR CONNECTION OVER NETWORK... */
if ((thread_op_status = pthread_create(&callback_tid, (void *) 0, 
                                        callback, (void *) 0)) != 0)
    {
        if (cc.debug)
        {
            fprintf(stderr, "Errore #%d - pthread_create()\n", errno);
        }
        set_global_error(&error_flag, CLIENT_INTERNAL_ERR);
        pthread_exit((void *) 0);
    }
if ((thread_op_status = pthread_join(callback_tid, (void *) 0)) != 0)
    {
        if (cc.debug)
        {
            fprintf(stderr, "Errore #%d - pthread_join()\n", errno);
        }

        set_global_error(&error_flag, CLIENT_INTERNAL_ERR);
        pthread_exit((void *) 0);
    }

    pthread_exit((void *) 0);
}

void *callback()
{
    int access_granted = 0;
    int action;

    fprintf(stdout, "Seleziona: ");
    scanf("%d", &action);
    if (action == LOG)
    {
        access_granted = action1();
    }
    else if (action == ABT)
    {
        access_granted = action2();
    }
    else
    {
        fprintf(stderr, "Invalid choice.\n");
    }

    pthread_exit((void *) 0);
}

0 个答案:

没有答案