Channel:performAtomic (Русский)
Available since LÖVE 0.10.0 |
This function is not supported in earlier versions. |
Выполняет какую-либо функцию относительно Канала.
Зачастую вызов нескольких функций в одну строку бывает полезен при работе с каналами. Однако если несколько Потоков вызывают методы Канала таким образом они могут чередоваться (например между двумя вызовами первого потока может произойти вызов второго потока.)
Этот метод позволяет избежать этой проблемы, убедившись, что поток, вызывающий метод, имеет эксклюзивный доступ к каналу до тех пор, пока указанная функция не вернется.
В данной функции стоит избегать сложных вычислений и большого количества строк кода. |
Contents
Функция
Вид
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