@vaxab23111 Тоже решил поучавствовать на разминки мозга, на 100% не претендует
function getCooficient(exp) { var matched = exp.match(/(\d+)[\s*+-/]*[A-z]/) if (matched) { return parseFloat(matched.pop()) } return 1 } function evalSide(exp) { var cleanExp = exp.replace(/\d*[\s*+-/]*[A-z]/, '') if (!cleanExp) return 0 return eval(cleanExp) } function invertResult(num) { return num > 0? -num : num } function solveEquation(equation) { var parts = equation.split("=") var leftSide = parts[0].trim() var rightSide = parts[1].trim() var coefficient = 1 var leftSideResult = evalSide(leftSide) var rightSideResult = evalSide(rightSide) if (/[A-z]/.test(leftSide)) { var coefficient = getCooficient(leftSide) leftSideResult = invertResult(leftSideResult) } else { var coefficient = getCooficient(rightSide) rightSideResult = invertResult(rightSideResult) } return (leftSideResult + rightSideResult) / coefficient } log(solveEquation("6 * X=14")); // выводит 2.3333333333333335 log(solveEquation("X+2=80")); // выводит 78 log(solveEquation("12+15=X")); // выводит 27 log(solveEquation("6 *X + 2=14")); // выводит 2 log(solveEquation("X+2 * 2=80")); // выводит 76 log(solveEquation("12+15/5=X")); // выводит 15 [[BAS_VARIABLE]] = solveEquation("6 * X=14")Как реализовать многопоточность?
-
На входе у меня урл сайта с которого надо спарсить все урлы его внутренних страниц. Потом зайти на них и скопировать их в соцсеть.
Как реализовать в таком случае многопоточность если использовать один скрипт?
Я пока что додумался только к реализации в 2 подхода, первый скрипт в один поток парсит урлы внутренних страниц, и записывает их в список, а второй скрипт уже постит в несколько потоков. -
Короче, я так понял можно в OnApplicationStart сделать функцию парсинга в один поток, после чего данные с урлами записать в список, а потому уже брать их в несколько потоков в основном теле скрипта, я правильно понял? Может еще какие варианты кто предложит?
-
@Samael_96 Самый простой. Первый поток парсит урл со всех страниц и записывает в ресурс, остальные потоки разгребают этот ресурс.
Ресурс создается в OnApplicationStart.Запись в ресурс - действие "Добавить Элемент"
Создание ресурса - "Создать Ресурс"
По окончании работы первого потока его можно убить действием Fail с параметром "Не перезапускать поток."
Действие "Номер потока" может получать номер треда.В будущем запланированы этапы выполнения. Для этого скрипта можно будет сделать 2 этапа и указать каждому свое количество потоков. Но такая реализация все равно самая быстрая, так как первый и второй этап работают одновременно.