January 14, 1999

Weaving Threads

Java provides two ways to create and run a thread. You can implement the Runnable interface or extend the Thread class. The Runnable interface defines a single method run(). Consider the following example of a class that extends the Runnable interface: 1. Class RunnableClass implements Runnable {2. // Class attributes

Zero as a Universal Initializer

The literal 0 is an int. However, it can be used as a universal initializer for every data type, since it is automatically cast to the appropriate type. In this respect, 0 is a special case because the compiler examines its context to determine its type. For example: void *p

The Copy Algorithm

The Standard Library provides a generic copy function, which can be used to copy a sequence of objects to a specified target. The first and the second arguments of copy() are const iterators that mark the sequence’s beginning and its end, respectively. The third argument points to a container into

Prefer Function Objects to Function Pointers

Passing a function pointer is a common practice in event-driven systems, whereby a callback routine is invoked through a pointer. C++, however, offers a better alternative to function pointers: function objects. Using a function object instead of a pointer offers several advantages. First, your code is more resilient to changes,