Есть ли способ обменяться между двумя веб-работниками? (Веб-работники в основном нити в Javascript)Обмен переменными между веб-работниками? [global variables?]
В таких языках, как C# у вас есть:
public static string message = "";
static void Main()
{
message = "asdf";
new Thread(mythread).Run();
}
public static void mythread()
{
Console.WriteLine(message); //outputs "asdf"
}
Я знаю, что тот плохой пример, но в моем приложении Javascript, у меня есть нить делать тяжелые вычисления, которые могут быть распространение через несколько потоков [так как у меня есть большой кусок данных в виде массива. Все элементы массива независимы друг от друга. Другими словами, мои рабочие потоки не должны заботиться о блокировке или что-то в этом роде]
Я нашел, что единственный способ «разделить» переменную между двумя потоками - создать Getter/setter [через прототипирование], а затем использовать postMessage/onmessage ... хотя это кажется действительно неэффективным [особенно с объектами, которые я должен использовать JSON для AFAIK]
LocalStorage/Database был выведен из спецификации HTML5, поскольку это может привести к deadlocks, так что это не вариант [печально] ...
Другая возможность, которую я нашел, - это использовать PHP, чтобы на самом деле иметь страницы getVariable.php и setVariable.php, которые используют localstorage для хранения i nts/strings ... еще раз, объекты [которые включают массивы/null] должны быть преобразованы в JSON ... а затем позже JSON.parse() 'd.
Насколько я знаю, Javascript рабочие потоки полностью изолированы от главной страницы резьбы [именно поэтому Javascript рабочие потоки не могут получить доступ к DOM элементов
Хотя PostMessage работает, это очень медленный процесс.
Спасибо!
Если бы какой-нибудь способ разделить не «атомные» ценности между работниками, семантика этих значений будет невозможно использовать с предсказуемыми результатами <-. Совершенно неправильно во всех отношениях. – Tony
Ухаживать за разработкой? –
Алгоритм выпечки Лампорта. Дейкстра охраняла командную логику. Все это специально для недетерминированной предсказуемости. – Tony