操作
バグ #4392
完了RingBufferのバッファフル時に待機する処理
開始日:
2017/12/12
期日:
進捗率:
100%
予定工数:
説明
threading.Conditionのwait関数はPython 3.2以前と以降で動作が違う。
Python 3.2以降ではタイムアウトした場合にFalseを返し、それ以外ではTrueを返すが、Python 2.7等では常にNoneを返す。
このためPython 2系と3系で場合分けをする。
n-miyamoto さんが約7年前に更新
- ステータス を 新規 から 解決 に変更
- 対象バージョン を RELENG_1_2 にセット
- 進捗率 を 0 から 100 に変更
以下のようにPython3の場合はwait関数の戻り値で判定し、Python2の場合はfull関数でバッファフルかを確認するように変更した。
if sec != 0 or nsec != 0:
wait_time = sec + (nsec/1000000000.0)
else:
wait_time = None
ret = self._full_cond.wait(wait_time)
if sys.version_info[0] == 3:
if not ret:
self._full_cond.release()
return OpenRTM_aist.BufferStatus.TIMEOUT
else:
if self.full():
self._full_cond.release()
return OpenRTM_aist.BufferStatus.TIMEOUT
操作