ネットワーク接続に無限ループを使用することは、良いプログラミング手法と考えられていますか?
例:
//connect to server
conn = getConnection()
while True:
data = conn.getData()
//do something
イベントを登録してプログラムをスリープさせるなど、効率的に実装したい。Linux でのシグナル処理に似た実装を探しています。
私のターゲット言語は、C、Python、および Java です。
ネットワーク接続に無限ループを使用することは、良いプログラミング手法と考えられていますか?
例:
//connect to server
conn = getConnection()
while True:
data = conn.getData()
//do something
イベントを登録してプログラムをスリープさせるなど、効率的に実装したい。Linux でのシグナル処理に似た実装を探しています。
私のターゲット言語は、C、Python、および Java です。
無限ループはほとんどの場合悪いものです。あなたが望むのは、終了する優雅な方法を備えた無限ループです。
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
たファイルを削除して最新の反復を完了させます。これにより、データが失われたり、反復ごとのワークフローが中断されたりすることがなくなります。