Архив метки: многопоточность

Многопоточность в PHP

Ну как известно штатно её нет (с). А иногда очень хочется. Предлагаемая пока альтернатива разработчками — функция Fork() которая по сути создает дочерний процесс, куда передает все открытые соединения, значения переменных и т.п. и продолжает в дочернем процессе с того момента с которого процесс в «родителе» начат.  Один нюанс — при завершении дочернего процесса — все соединения закрываются. Обходить этот нюанс можно посылая сигнал posix_kill(posix_getpid(), SIGHUP);  в дочернем процессе в случае нужды его завершить.

Таким образом «эталонная» реализация «многопоточности» в PHP будет выглядеть примерно так:

какойто код...
какойто код...
//предстоит длительная трудоемкая задача
$child_pid = pcntl_fork();
if ($child_pid==0){
	//длительная ресурсоемкая задача
	echo "--завершил дочерний процесс\n";
	posix_kill(posix_getpid(), SIGHUP);
} else {
	echo "--стартовал дочерний процесс\n";
};

 

Оказывается у Arduino Mega/Uno нет нормальной многопоточности…

ArduinoUno_r2_front450pxДумал в выходные про будущую реализацию «Умного дома».. Делал некоторые наброски и т.п.. Стало шоком, что оказывается в Arduino не реализована «железячная» многопоточность т.е. выполнение нескольких подпрограмм одновременно. Реализовать некое подобие можно при помощи костылей «выполнение по таймеру» и прерываний.. Но всё не то.. Так-же есть несколько скетчей, написаных на ассемблере, которые расширяют стандартный вход main в программе, и делают «некий программный аналог» многопоточности. Ну ближе к делу посмотрим… Знать бы конечно сразу, так возможно бы остановился на Raspberry Pi..но цена там конечно более кусачая.