Classes | |
class | AltChanin |
This class is identical to Chanin except that it also supports ALTing. More... | |
class | Alternative |
A class for performing ALT s. More... | |
class | Any2AnyChannel |
An any-to-any unbuffered channel. More... | |
class | Any2OneChannel |
An any-to-one unbuffered channel. More... | |
class | Barrier |
A barrier that multiple processes can synchronize on. More... | |
class | BarrierEnd |
The "end" of a barrier for use. More... | |
class | BarrierError |
An error that is thrown when the Barrier or BarrierEnd classes are mis-used. More... | |
class | BlackHoleChannel |
A "one-to-none" channel. More... | |
class | Bucket |
A bucket is a synchronisation primitive. More... | |
class | BufferedAny2AnyChannel |
An any-to-any buffered channel. More... | |
class | BufferedAny2OneChannel |
A any-to-one buffered channel. More... | |
class | BufferedChannelFactory |
An implementation of ChannelFactory for buffered channels. More... | |
class | BufferedOne2AnyChannel |
A one-to-any buffered channel. More... | |
class | BufferedOne2OneChannel |
A one-to-one buffered channel. More... | |
class | Chanin |
The reading end of a channel. More... | |
class | ChannelBuffer |
The base class for channel buffers. More... | |
class | ChannelBufferFactory |
The base class for all the channel buffer factories. More... | |
class | ChannelBufferFactoryImpl |
A default implementation of ChannelBufferFactory for use with buffers that have default constructors. More... | |
class | ChannelFactory |
A channel "factory" class. More... | |
class | Chanout |
The writing end of a channel. More... | |
class | CPPCSPError |
The base class for errors in C++CSP2 programs. More... | |
class | CSProcess |
The base class for processes, that allows processes to be run in a new thead or the same thread. More... | |
class | DeadlockError |
Thrown when deadlock occurs in a C++CSP2 program; it is a fatal, unrecoverable error. More... | |
class | FIFOBuffer |
A FIFO buffer with a fixed maximum capacity. More... | |
class | Guard |
An ALT guard. More... | |
class | InfiniteFIFOBuffer |
A FIFO buffer of unlimited capacity. More... | |
class | Mobile |
Templated class implementing MOBILE semantics. More... | |
class | One2AnyChannel |
A one-to-any unbuffered channel. More... | |
class | One2OneChannel |
A one-to-one unbuffered channel. More... | |
class | OutOfResourcesException |
An exception that is thrown whenever C++CSP2 cannot allocate enough resources. More... | |
class | OverwritingBuffer |
An overwriting FIFO buffer. More... | |
class | ParallelHelper |
A helper class returned by the InParallel() function. More... | |
class | ParallelHelperOneThread |
A helper class returned by the InParallelOneThread() function. More... | |
class | PoisonException |
The poison exception. More... | |
class | RelTimeoutGuard |
An ALT relative timeout guard, for use in an Alternative. More... | |
class | RunHelper |
The base class for the various helper classes for the Run function. More... | |
class | ScopedBarrierEnd |
A scoped Barrier end. More... | |
class | ScopedExtInput |
Provides an easy way to perform extended inputs using scope. More... | |
class | ScopedForking |
A class used to fork processes. More... | |
class | SequentialHelper |
A helper class returned by the InSequence() function. More... | |
class | SequentialHelperOneThread |
A helper class returned by the InSequenceOneThread() function. More... | |
class | SizedChannelBufferFactoryImpl |
A default implementation of ChannelBufferFactory for use with buffers that have constructors that take a size argument. More... | |
class | SkipGuard |
An ALT skip guard, for use in an Alternative. More... | |
class | StandardChannelFactory |
An implementation of ChannelFactory for standard (unbuffered, non-networked) channels. More... | |
class | ThreadCSProcess |
A direct sub-class of ThreadCSProcess (except of course CSProcess) is a process that will always be started in a new thread. More... | |
struct | Time |
C++CSP2 uses this typedef to represent times for the purposes of timeouts and waits. More... | |
class | TimeoutGuard |
An ALT absolute timeout guard, for use in an Alternative. More... | |
class | WhiteHoleChannel |
A "none-to-one" channel. More... | |
Namespaces | |
namespace | common |
A namespace containing all the commonly used simple processes, such as Id. | |
NoPoison | |
Returns a non-poisonable version of the given channel end. This can be used to supply non-poisonable channel ends to processes, for example: One2AnyChannel<int> c; One2OneChannel<int> d; Run(new Id<int>(NoPoison(c.reader()),d.writer()));
If you call poison() on a non-poisonable channel-end, it does not poison the channel (i.e. it has no effect). | |
template<typename DATA_TYPE> | |
Chanout< DATA_TYPE > | NoPoison (const Chanout< DATA_TYPE > &out) |
template<typename DATA_TYPE> | |
AltChanin< DATA_TYPE > | NoPoison (const AltChanin< DATA_TYPE > &in) |
template<typename DATA_TYPE> | |
Chanin< DATA_TYPE > | NoPoison (const Chanin< DATA_TYPE > &in) |
Functions | |
void | CPPCSP_Yield () |
Yields to another user-thread in this kernel-thread. | |
Time | CurrentTime () |
Gets the current time. | |
void | CurrentTime (Time *const val) |
Gets the current time. | |
void | End_CPPCSP () |
Cleans up the C++CSP2 run-time. | |
csp::sign32 | GetMilliSeconds (const Time &val) |
Gets the number of milliseconds (truncated) in the specified time. | |
double | GetSeconds (const Time *val) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Included for compatibility with C++CSP v1.x. | |
double | GetSeconds (const Time &val) |
Gets the number of seconds from the specified Time. | |
template<typename ITERATOR> | |
ParallelHelper | InParallel (ITERATOR begin, ITERATOR end) |
Starts an InParallel chain with the given processes. | |
ParallelHelper | InParallel (const ParallelHelper &p) |
Starts an InParallel chain with the given helper. | |
ParallelHelper | InParallel (ThreadCSProcessPtr p) |
Starts an InParallel chain with the given process. | |
template<typename ITERATOR> | |
ParallelHelperOneThread | InParallelOneThread (ITERATOR begin, ITERATOR end) |
Starts an InParallelOneThread chain with the given processes. | |
ParallelHelperOneThread | InParallelOneThread (CSProcessPtr p) |
Starts an InParallelOneThread chain with the given process. | |
template<typename ITERATOR> | |
SequentialHelper | InSequence (ITERATOR begin, ITERATOR end) |
Starts an InSequence chain with the given processes. | |
SequentialHelper | InSequence (ThreadCSProcessPtr p) |
Starts an InSequence chain with the given process. | |
template<typename ITERATOR> | |
SequentialHelperOneThread | InSequenceOneThread (ITERATOR begin, ITERATOR end) |
Starts an InSequenceOneThread chain with the given processes. | |
SequentialHelperOneThread | InSequenceOneThread (CSProcessPtr p) |
Starts an InSequenceOneThread chain with the given process. | |
Time | MicroSeconds (const long micros) |
Puts the specified integer amount of microseconds into a Time structure. | |
void | MicroSeconds (const long micros, Time *const val) |
Puts the specified integer amount of microseconds into a Time structure. | |
Time | MilliSeconds (const long millis) |
Puts the specified integer amount of milliseconds into a Time structure. | |
void | MilliSeconds (const long millis, Time *const val) |
Puts the specified integer amount of milliseconds into a Time structure. | |
void | Run (ThreadCSProcessPtr) |
Runs the process in a new thread. | |
void | Run (const SequentialHelperOneThread &) |
Runs the processes sequentially in one new thread. | |
void | Run (const ParallelHelperOneThread &) |
Runs the parallel processes in one new thread. | |
void | Run (const SequentialHelper &) |
Runs the processes sequentially in new threads. | |
void | Run (const ParallelHelper &) |
Runs the parallel processes in new threads. | |
void | RunInThisThread (CSProcessPtr) |
Runs the process in this thread. | |
void | RunInThisThread (const SequentialHelperOneThread &) |
Runs the processes sequentially in this thread. | |
void | RunInThisThread (const ParallelHelperOneThread &) |
Runs the parallel processes in this thread. | |
Time | Seconds (const double secs) |
Puts the specified floating-point amount of seconds into a Time structure. | |
void | Seconds (const double secs, Time *const val) |
Puts the specified floating-point amount of seconds into a Time structure. | |
void | SleepFor (const Time &timeToSleepFor) |
Makes the current process sleep for the specified amount of time. | |
void | SleepUntil (const Time &timeToSleepUntil) |
Makes the current process sleep for the specified amount of time. | |
void | Start_CPPCSP () |
Starts the C++CSP2 run-time. | |
void | Thread_Yield () |
Yields the processor to another (kernel-)thread. |
void csp::CPPCSP_Yield | ( | ) |
Yields to another user-thread in this kernel-thread.
If no other user-threads are ready to run in the current kernel-thread, the caller continues without yielding. If you wish to yield to other kernel-threads, use csp::Thread_Yield().
void csp::End_CPPCSP | ( | ) |
Cleans up the C++CSP2 run-time.
This function should be called as a complement to Start_CPPCSP()
void csp::Start_CPPCSP | ( | ) |
Starts the C++CSP2 run-time.
This function should be called before using any part of C++CSP2
The intention is that you should call Start_CPPCSP() before using any C++CSP2 features, and then call End_CPPCSP() once you have finished.
If, for some reason, you have to start some threads without using C++CSP2 to do so, you should call this function (and then End_CPPCSP() later) in each of the threads in which you wish to use a feature of C++CSP2.
void csp::Thread_Yield | ( | ) |
Yields the processor to another (kernel-)thread.
The other thread may or may not be a C++CSP2 thread, so you may yield to a thread from another program. If you want to yield to other user-threads in this kernel-thread, use csp::CPPCSP_Yield().