Up to and including version 0.6.1, the Timetable Generator API only supported use in a single-threaded context.
Starting from version 0.6.2, the Timetable Generator API can be built in single-threaded or multi-threaded mode. If building from source, see the README file for instructions for how to control the threading mode in which the library is built. If using the prebuilt binaries, note that they have been built in multi-threaded mode on Linux and single-threaded mode for Windows (because the implementation uses C++11 threads, which MinGW does not currently support. Once MinGW acquires C++11 threading support, the Windows binaries will be built in multi-threaded mode as well.)
When the API is built in multi-threaded mode:
TimetableManager
APIs can safely be called concurrently with each other and with CourseLoad
APIs. Note that in the case of APIs which modify the course timetable data
(UpdateTimetableData()
, LoadTimetableData()
, and ReloadData()
), course loads opened from user sessions
created before the API call completes will use the old data, and those
opened from sessions created after the API call completes successfully
will use the new data.
The performance overhead of using the library in multi-threaded mode is negligible. Single-threaded mode exists mainly to support platforms that don't have support for C++11 threads (i.e. MinGW).