Release Notes: This release adds an optional ct_return() function by which a thread may return control to the scheduler by a setjmp/longjmp mechanism rather than by an ordinary function return. In some circumstances, ct_return() may be more efficient or more convenient. By default, ct_return() is disabled in order to avoid overhead for applications that don't use it, but you can enable it by using a compile-time macro.
Release Notes: The Cheap Threads functions can now be called directly from C++ programs. A new sample program, demo1, was included to demonstrate two threads that take turns writing to standard output.
Release Notes: A memory leak, which was introduced in v2.5, is now fixed. The leak occurred when activating a thread with an enqueue instead of a message.
Release Notes: The message-passing machinery now uses a reference-counting scheme to reduce the overhead of delivering messages. This change also reduces the use of memory, especially when distributing long messages to multiple threads. The API is unchanged.
Release Notes: Cheap Threads now offers a timeout facility as a compiletime option. A thread may put itself to sleep and be awakened after a specified interval, if some other event doesn't awaken it first. There is now a mailing list for discussion and support of Cheap Threads.
Release Notes: This release fixes a misplaced #endif in ctutil.h which had caused compile errors when compiled with debugging turned off.
Release Notes: A new convenience function ct_self_data() now returns a pointer to the current thread's data. Also, the scheduling algorithm has changed slightly. In theory, though probably not in practice, this change could break existing code.
Release Notes: A new function, ct_create_sleeping_thread(), creates a thread without enqueuing it for execution. The new thread will not run until it is awakened by an event. Thereby you can avoid awkward workarounds that would otherwise be necessary sometimes.
Release Notes: This release fixes a bug. When a thread terminated itself by calling ct_wait(), its destructor function (if it had one) would be called twice.
Release Notes: A bug has been fixed so that a broadcast message is now delivered to the sending thread as well as to the others. Also, you can now awaken one or more sleeping threads without having to send a message.