使用无限循环进行网络连接是否是一种很好的编程习惯?
示例:
//connect to server
conn = getConnection()
while True:
data = conn.getData()
//do something
我希望以有效的方式实现这一点,例如注册事件并使程序进入休眠状态。我正在寻找类似于在Linux中处理信号的实现。
我的目标语言是C,Python和Java。
答案 0 :(得分:0)
无限循环几乎总是坏的。你想要的是一个无限循环,有一种优雅的退出方式。
尝试这种方法,用Python说明,但你也可以在其他语言中找到它:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import atexit
PID = os.getpid()
@atexit.register
def clean_shut():
LOGGER.debug("Clean shut performed")
try:
os.unlink("module_name.%d" % PID)
except:
pass
def main():
f = open("module_name.%d" % PID, "w")
f.write("Delete this file to shut module_name cleanly")
f.close()
conn = getConnection()
while os.path.exists("module_name.%d" % PID):
conn = getConnection()
# do something
if __name__ == '__main__':
main()
为了优雅地退出循环(如果您选择这样做),删除生成的module_name.%PID
文件以完成最近的迭代,这样您就不会丢失任何数据或破坏您的迭代工作流程。