Project

General

Profile

バグ #4392

RingBufferのバッファフル時に待機する処理

Added by n-miyamoto almost 4 years ago. Updated about 3 years ago.

Status:
終了
Priority:
通常
Assignee:
Start date:
12/12/2017
Due date:
% Done:

100%

Estimated time:

Description

threading.Conditionのwait関数はPython 3.2以前と以降で動作が違う。

Python 3.2以降ではタイムアウトした場合にFalseを返し、それ以外ではTrueを返すが、Python 2.7等では常にNoneを返す。
このためPython 2系と3系で場合分けをする。

Associated revisions

Revision 899 (diff)
Added by miyamoto almost 4 years ago

[compat, bugfix, ->RELENG_1_2] bug fix. refs #4392

History

#1 Updated by n-miyamoto almost 4 years ago

  • Status changed from 新規 to 解決
  • Target version set to RELENG_1_2
  • % Done changed from 0 to 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

#2 Updated by n-miyamoto about 3 years ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF