Skip to content

Is CogPar thread-safe? #1

Open
Open
@ediazal

Description

@ediazal

Hi

Please consider the case when several instances of Parser call the parse method, at the same time, each one from a different thread.

  public ExpressionNode parse(String expression)
  {
    Tokenizer tokenizer = Tokenizer.getExpressionTokenizer(); // <---
    tokenizer.tokenize(expression);
    LinkedList<Token> tokens = tokenizer.getTokens();
    return this.parse(tokens);
  }
  public static Tokenizer getExpressionTokenizer()
  {
    if (expressionTokenizer == null)
      expressionTokenizer = createExpressionTokenizer();
    return expressionTokenizer;
  }

As expressionTokenizer is static, every thread would share the tokenizer, which could eventually lead to failure.

This might solve the issue:

  public ExpressionNode parse(String expression)
  {
    Tokenizer tokenizer = Tokenizer.createExpressionTokenizer(); // <---
    tokenizer.tokenize(expression);
    LinkedList<Token> tokens = tokenizer.getTokens();
    return this.parse(tokens);
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions