Hi,
System is OSF1 V5.1 732 alpha.
Compaq C++ V6.2-024 for Compaq Tru64 UNIX V5.1 (Rev. 732)
There seems to be a strange problem with C++ programs
compiled with the -pthread flag.
Example program:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 24795
#define MALSIZE1 32
#define MALSIZE2 20
int main() {
char *blah, *blah2;
char *index[MAXSIZE], *index2[MAXSIZE];
for (int k=0; k<MAXSIZE; k++) {
static int bla;
blah = new char[MALSIZE1];
sprintf (blah, "bla%d", ++bla);
index[k] = (char*) blah;
blah2 = new char[MALSIZE1];
sprintf (blah2, "bla%d", ++bla);
index2[k] = (char*) blah2;
}
printf("blah\n");
for (int k=0; k<MAXSIZE; k++) {
delete [] index[k];
}
printf("blah 1\n");
for (int k=0; k<MAXSIZE; k++) {
delete [] index2[k];
}
printf("blah 2\n");
}
Runs very fast when compiled:
cxx t.cc
and very slow (5 seconds) if compiled:
cxx t.cc -pthread
Further tests....
1. If I move the second delete statement into the first
delete loop the execution speed is effectively the same with or
without the -pthread flag.
2. If I alloc MALSIZE2 into index2 and MALSIZE1 into index1
excution speed is effectively the same with or without the
-pthread flag...irrespective of where index2 is deleted.
Has this problem been seen before? Can anybody reproduce
it locally? Is there a solution?
Many thanks for any help or advice,
- Michael
Received on Thu Mar 08 2001 - 10:56:12 NZDT