Code: Select all
var x := 123; var v[1000] := [1]; sum(2 * v / x);
< /code>
Folgendes ist ungefähr, wie mein Lade -Thread funktioniert: < /p>
typedef exprtk::symbol_table symbol_table_t;
typedef exprtk::expression expression_t;
typedef exprtk::parser parser_t;
std::vector expressionsList;
while (online)
{
std::string newExprString = getNextExpression(transportConext);
expression_t newExpression;
newExpression.register_symbol_table(globalSymbolTable);
auto usedResidentMemoryBefore = System::Utils::getResidentMemoryUsed();
if (!parser.compile(newExprString,newExpression))
{
handleCompilationError(oarser,newExprString);
continiue;
}
auto usedResidentMemoryAfter = System::Utils::getResidentMemoryUsed();
if ((usedResidentMemoryAfter - usedResidentMemoryBefore) > maxMemoryLimit)
{
handleExpressionError(newExprString);
continue;
}
// all is good add new expression
expressionList.push_back(newExpression);
}