如何在C中同时运行两个无限循环?

时间:2017-06-21 14:56:25

标签: c multithreading

两个循环必须同时工作,同时是无限的。我以前用Java和Python做过这个,但是当我在C中尝试这样做时遇到了问题。

如果我在Java中这样做:

public static void main(String[] args)
{
    new Thread(new Runnable()
    {
        @Override
        public void run()
        {
            while (true)
            {
                // some code
            }
        }
    }).start();

    while (true)
    {
        // some code
    }
}

或者在Python中:

def thread():
    while True:
        # some code

def main():
    t = threading.Thread(target = thread)
    t.start()

    while True:
        # some code

if __name__ == '__main__':
    main()

一切都好,但是当我在C中这样做时:

void *thread(void *args)
{
    while (1)
    {
        // some code
    }
}

int main()
{
    pthread_t tid;

    pthread_create(&tid, NULL, thread);
    pthread_join(tid, NULL);

    while (1)
    {
        // some code
    }

    return 0;
}

只有线程中的循环运行,编译器在创建线程后根本不会读取代码。那么怎么做呢?

1 个答案:

答案 0 :(得分:8)

pthread_join函数告诉调用线程等到给定的线程完成。由于你开始的线程永远不会结束,main会永远等待。

删除该函数以允许主线程在启动子线程后继续。

int main()
{
    pthread_t tid;

    pthread_create(&tid, NULL, thread);

    while (1)
    {
        // some code
    }

    return 0;
}