C++ Library Reference

Object Destruction

Before an iostream object that is shared by several threads is deleted, the main thread must verify that the subthreads are finished with the shared object. The following example shows how to safely destroy a shared object.


Example 4-12 Destroying a Shared Object

#include <fstream.h>
#include <thread.h>
fstream* fp;

void *process_rtn(void*)
{
	// body of sub-threads which uses fp...
}

multi_process(const char* filename, int numthreads) 
{
	fp = new fstream(filename, ios::in); // create fstream object
                                         // before creating threads.
	// create threads
	for (int i=0; i<numthreads; i++)
			thr_create(0, STACKSIZE, process_rtn, 0, 0, 0);

		...
	// wait for threads to finish
	for (int i=0; i<numthreads; i++)
			thr_join(0, 0, 0);

	delete fp;                          // delete fstream object after
	fp = NULL;                         // all threads have completed.
}