cfiler
SyncCall Class Reference

同期呼び出しクラス More...

Public Member Functions

def __init__ (self)
 SyncCallのコンストラクタ More...
 
def __call__ (self, func, args=())
 関数を同期呼び出しする More...
 
def check (self)
 関数を同期呼び出しが要求されているかをチェックし、必要に応じて呼び出しを行う More...
 

Detailed Description

同期呼び出しクラス

ほかのスレッドの中で同期して関数を呼び出すためのクラスです。

call() に渡された関数が、ほかのスレッドが呼び出した check() のなかで実行され、 返値が call() の返値として返ります。

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self)

SyncCallのコンストラクタ

SyncCallのコンストラクタを呼び出したスレッドは内部に記録され、 単純な関数呼び出しで済むのか、マルチスレッドによる同期処理が必要なのかを 判断するために利用されます。

Member Function Documentation

◆ __call__()

def __call__ (   self,
  func,
  args = () 
)

関数を同期呼び出しする

Parameters
self-
func関数
args引数リスト
Returns
func(*args)の返値

SyncCallのコンストラクタを呼び出したスレッドのなかで call() を呼び出した場合は、 単純に func(*args) を呼び出します。

SyncCallのコンストラクタを呼び出したスレッドとは別のスレッドで call() を呼び出した場合は、 SyncCallのコンストラクタを呼び出したスレッドのなかで check() が呼ばれるまで待って、 check() のなかで同期的に func(*args) が呼び出されます。

◆ check()

def check (   self)

関数を同期呼び出しが要求されているかをチェックし、必要に応じて呼び出しを行う

check() は、SyncCallのコンストラクタを呼び出したスレッドから呼び出す必要があります。

別のスレッドの call() 呼び出しに渡された func, args を、 check() のなかで同期的に呼び出します。