Channel:performAtomic (日本語)
LÖVE 0.10.0 から使用可能 |
この関数は以前のバージョンでは非対応です。 |
このチャネルに対してアトミックに指定された関数を実行します。
多くの場合、同一チャンネルで多数のメソッドを連続で呼び出すことは有用です。 しかしながら多数のスレッドが同時に本チャンネルのメソッドを呼び出す場合は、各スレッドで異なる呼び出しは交互配置されて終了してしまいます (例えば一次スレッド呼び出し間に一つ以上の二次スレッドの呼び出しが発生する場合があります)。
このメソッドは指定された関数に復帰するまでメソッドを呼び出しているスレッドがチャンネルに対する排他アクセス権を有していることを確認することで本問題を回避します。
このメソッドで指定される関数として長時間実行また高価なコードは避けるべきです。 |
関数
概要
ret1, ... = Channel:performAtomic( func, arg1, ... )
引数
function func
function(channel, arg1, arg2, ...) end
形式による呼び出し対象の関数。呼び出し時に関数の第一引数をチャンネルに渡します。any arg1
- 指定された関数の呼び出し時に受け取る追加の引数。
any ...
- 指定された関数の呼び出し時に受け取る追加の引数。
返値
用例
チャンネル内にある単一値のみ再設定します
local function setChannel(channel, value)
channel:clear()
channel:push(value)
end
local c = love.thread.getChannel("MyChannel")
c:performAtomic(setChannel, "hello world")
関数
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info