首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使两个在C中同时运行的无限循环?

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

Stack Overflow用户
提问于 2017-06-21 14:56:24
回答 1查看 404关注 0票数 1

这两个循环同时工作,同时是无限的,这是必要的。我以前用Java和Python做过这件事,但是当我尝试用C语言做这件事时,我遇到了一个问题。

如果我在Java中这样做的话:

代码语言:javascript
运行
复制
public static void main(String[] args)
{
    new Thread(new Runnable()
    {
        @Override
        public void run()
        {
            while (true)
            {
                // some code
            }
        }
    }).start();

    while (true)
    {
        // some code
    }
}

或者在Python中:

代码语言:javascript
运行
复制
def thread():
    while True:
        # some code

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

    while True:
        # some code

if __name__ == '__main__':
    main()

好吧,但是当我用C语言这么做的时候:

代码语言:javascript
运行
复制
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;
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 14:59:55

pthread_join函数告诉调用线程等待给定线程完成。由于您启动的线程从未结束,main将永远等待。

摆脱该函数,允许主线程在启动子线程后继续运行。

代码语言:javascript
运行
复制
int main()
{
    pthread_t tid;

    pthread_create(&tid, NULL, thread);

    while (1)
    {
        // some code
    }

    return 0;
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44679608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档