V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kkkbbb
V2EX  ›  程序员

代码问题请教

  •  
  •   kkkbbb · 2023-02-15 11:05:54 +08:00 · 1250 次点击
    这是一个创建于 629 天前的主题,其中的信息可能已经有所发展或是发生改变。
    c++项目,如下代码:
    while (1) {
    sleep(10);
    }
    cts_zmq_deinit();
    pthread_cancel(thrid_msg_recv);
    pthread_cancel(thrid_msg_heartbeat);

    while 循环后面的后处理有意义么?理论上会执行到么?
    10 条回复    2023-02-16 09:43:20 +08:00
    shakeyo
        1
    shakeyo  
       2023-02-15 11:16:16 +08:00
    无意义,循环不会跳出,这也太基础了
    大概率是调试代码
    DCELL
        2
    DCELL  
       2023-02-15 11:19:42 +08:00
    这段代码包括两部分内容:

    一个死循环,每次循环会暂停执行 10 秒钟。while(1)表示无限循环,sleep(10)表示暂停执行 10 秒钟。

    三个线程控制命令,分别是 cts_zmq_deinit()、pthread_cancel(thrid_msg_recv)和 pthread_cancel(thrid_msg_heartbeat)。其中 cts_zmq_deinit()是一种消息传递机制,用于线程间通信,pthread_cancel 则是线程的取消函数,用于中止正在运行的线程。

    综合来看,这段代码中的循环是为了不断地暂停执行,以便等待其他线程完成它们的任务。而这三个线程控制命令则是用于在适当的时候中止这些线程,以便程序可以正常结束运行。


    ------ by ChatGPT
    okkkk
        3
    okkkk  
       2023-02-15 11:20:01 +08:00
    while (1) 死循环,后面代码永远执行不到,即使程序被终止,也执行不到。
    kkkbbb
        4
    kkkbbb  
    OP
       2023-02-15 11:29:53 +08:00
    @DCELL 有点秀了
    tyrantZhao
        5
    tyrantZhao  
       2023-02-15 11:36:12 +08:00
    @DCELL 秀啊
    oneisall8955
        6
    oneisall8955  
       2023-02-15 11:36:59 +08:00
    java 类似代码,编译期都过不去
    billlee
        7
    billlee  
       2023-02-15 13:39:33 +08:00 via Android
    sleep 可以被信号中断
    kkkbbb
        8
    kkkbbb  
    OP
       2023-02-15 14:00:48 +08:00
    中断了也跳不出循环吧
    @billlee
    SeanTheSheep
        9
    SeanTheSheep  
       2023-02-15 16:47:32 +08:00
    这个问题引申一下,既然 while(1)会无限循环,请问 C++ compiler 会直接把后面的 identifers 剪枝吗?还是会一起编译?
    kkkbbb
        10
    kkkbbb  
    OP
       2023-02-16 09:43:20 +08:00
    @SeanTheSheep 不会吧,while(1)后面的能不能执行取决于里面的代码逻辑,不是一定无限循环啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   976 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:30 · PVG 05:30 · LAX 13:30 · JFK 16:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.