Most of what EM does is thread-safe.
The Check() method of entities should be split into two methods, Check() and Work().
Work() should guarentee to be threadsafe, and Check() should do any unsafe teardown actions.
This way, Work() can be called for each entity concurrently, and then just a quick spin through Check() made afterwards to clean up dead entities.
This will improve performance. Potentially by a lot.
Most of what EM does is thread-safe. The Check() method of entities should be split into two methods, Check() and Work(). Work() should guarentee to be threadsafe, and Check() should do any unsafe teardown actions. This way, Work() can be called for each entity concurrently, and then just a quick spin through Check() made afterwards to clean up dead entities. This will improve performance. Potentially by a lot.