- 1
- 2
- 3
- 4
- 5
- 6
- 7
return coroutine.create(function(x)
while true do
socket.sleep(1);
collectgarbage()
coroutine.yield()
end
end)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−2
return coroutine.create(function(x)
while true do
socket.sleep(1);
collectgarbage()
coroutine.yield()
end
end)
Выделил сборщик мусора в отдельный поток, и чтоб он вечно собирал за мной всякую срань, но раз в секунду.
Ожидание: Поток спит в течении 1 секунды.
Реальность: Вся программа спит в течении 1 секунды.
guest8 26.08.2018 11:50 # −999
bormand 26.08.2018 16:48 # 0
> поток
Ну-ну.
TOPT 27.08.2018 04:26 # 0
bormand 27.08.2018 07:51 # 0
TOPT 27.08.2018 08:04 # 0
bormand 27.08.2018 08:11 # 0
TOPT 27.08.2018 08:14 # 0
bormand 27.08.2018 08:19 # 0
Твой socket.sleep() именно так и устроен? Судя по "вся программа спит секунду" -- нет.
TOPT 27.08.2018 08:28 # 0
Информативно описано:
Freezes the program execution during a given amount of time.
Time is the number of seconds to sleep for.
bormand 27.08.2018 08:31 # 0
Steve_Brown 27.08.2018 09:49 # +3
TOPT 27.08.2018 08:30 # 0
666_N33D135 27.08.2018 09:32 # 0
guest8 04.03.2019 20:47 # −999
bormand 04.03.2019 20:54 # 0
guest8 04.03.2019 21:12 # −999
cKpunToBou_neTyx 04.03.2019 21:58 # 0
Это хорошо, если задачи изолированы. А если нет, то многозадачность заставляет думать о всяком говне вроде критических секций и синхронизации. Асинхронная малозадачность позволяет программисту НЕ думать о взаимодействии между потоками.
Оба пути полезны. Надо использовать многозадачность и малозадачность в тех случаях, где они действительно нужны. Например, в программе с графическим интерфейсом основная логика будет построена на малозадачности, чтобы не думать о синхронизации и т.п., а для тяжёлых изолированных задач, запускаемых по кнопке - использовать многозадачность.
bormand 05.03.2019 08:04 # 0
KPACHblu_nemyx 04.03.2019 22:21 # 0
Я ещё за то, чтобы отменить защиту памяти, тогда можно будет срать по произвольному адресу, как в «DOS».
Давайте любой код исполнять в нулевом кольце, чтобы сразу с обращением к I/O из юзерского кода.
bormand 05.03.2019 08:05 # 0
CHayT 04.03.2019 21:49 # +1
bormand 05.03.2019 08:07 # 0
Решили объединить худшие стороны кооперативной и вытесняющей многозадачности?
griffi1 08.08.2020 22:47 # 0
TOPT 09.08.2020 04:39 # 0
Не я это придумал. Сопрограммы в луа меют тип "поток"
guest8 04.03.2019 01:00 # −999
TOPT 04.03.2019 10:55 # 0
inkanus_gray 04.03.2019 20:42 # −90
guest8 04.03.2019 20:45 # −999
cmepmop 04.03.2019 21:30 # 0
guest8 04.03.2019 21:52 # −999
BEKTOPHblu_nETyX 05.03.2019 08:32 # 0
BEKTOPHblu_nETyX 05.03.2019 08:33 # 0
bormand 05.03.2019 09:09 # 0
BEKTOPHblu_nETyX 05.03.2019 09:23 # +1
guest8 05.03.2019 12:52 # −999
BEKTOPHblu_nETyX 05.03.2019 08:32 # 0
OCETuHCKuu_nemyx 09.08.2020 00:06 # 0
guest8 09.08.2020 04:43 # −999
TOPT 09.08.2020 04:50 # 0
OCETuHCKuu_nemyx 09.08.2020 20:19 # 0
KOPOHABuPYC 09.08.2020 20:36 # −1