Example of a simple script creating 3 threads.
This script can only be executed via ACliC .x threadsh1.C++.
void *handle(void *ptr)
{
long nr = (long) ptr;
int upd = 50000;
char name[32];
sprintf(name,"hpx%ld",nr);
hpx[nr] =
new TH1F(name,
"This is the px distribution",100,-4,4);
gRandom->SetSeed();
for (
Int_t i = 0; i < nfills; i++) {
gRandom->Rannor(px,py);
pz = px*px + py*py;
if (i && (i%upd) == 0) {
if (i == upd) {
}
}
}
return 0;
}
void *joiner(void *)
{
return 0;
}
{
c[id] = 0;
}
void threadsh1()
{
c[0] =
new TCanvas(
"c0",
"Dynamic Filling Example",100,20,400,300);
c[1] =
new TCanvas(
"c1",
"Dynamic Filling Example",510,20,400,300);
c[2] =
new TCanvas(
"c2",
"Dynamic Filling Example",100,350,400,300);
c[3] =
new TCanvas(
"c3",
"Dynamic Filling Example",510,350,400,300);
c[0]->
Connect(
"Closed()", 0, 0,
"closed(Int_t=0)");
c[1]->
Connect(
"Closed()", 0, 0,
"closed(Int_t=1)");
c[2]->
Connect(
"Closed()", 0, 0,
"closed(Int_t=2)");
c[3]->
Connect(
"Closed()", 0, 0,
"closed(Int_t=3)");
printf("Starting Thread 0\n");
t[0] =
new TThread(
"t0", handle, (
void*) 0);
printf("Starting Thread 1\n");
t[1] =
new TThread(
"t1", handle, (
void*) 1);
printf("Starting Thread 2\n");
t[2] =
new TThread(
"t2", handle, (
void*) 2);
printf("Starting Thread 3\n");
t[3] =
new TThread(
"t3", handle, (
void*) 3);
printf("Starting Thread 4\n");
t[4] =
new TThread(
"t4", joiner, (
void*) 3);
while (!finished) {
for (int i = 0; i < 4; i++) {
if (c[i] && c[i]->IsModified()) {
}
}
}
delete t[0];
delete t[1];
delete t[2];
delete t[3];
delete t[4];
}
- Author
- Victor Perevovchikov
Definition in file threadsh1.C.