Converting a static variable into a shared_ptr is a bad idea, start with a shared_ptr from the start
This commit is contained in:
parent
e0d7a92eba
commit
c85f29c8d1
@ -63,21 +63,21 @@ protected:
|
|||||||
|
|
||||||
//System.Threading.Interlocked.Increment(ref nthread);
|
//System.Threading.Interlocked.Increment(ref nthread);
|
||||||
//var rng = new Random();
|
//var rng = new Random();
|
||||||
TestThreadRecipient r;
|
SGSharedPtr<TestThreadRecipient> r = new TestThreadRecipient;
|
||||||
char temp[100];
|
char temp[100];
|
||||||
sprintf(temp, "Notif %d", threadId);
|
sprintf(temp, "Notif %d", threadId);
|
||||||
printf("starting thread %s\n", temp);
|
printf("starting thread %s\n", temp);
|
||||||
TestThreadNotification tn((const char*)&r);
|
TestThreadNotification tn((const char*)&r);
|
||||||
for (int i = 0; i < MaxIterations; i++)
|
for (int i = 0; i < MaxIterations; i++)
|
||||||
{
|
{
|
||||||
simgear::Emesary::IReceiverPtr ir(&r);
|
simgear::Emesary::IReceiverPtr ir(r);
|
||||||
simgear::Emesary::GlobalTransmitter::instance()->Register(ir);
|
simgear::Emesary::GlobalTransmitter::instance()->Register(ir);
|
||||||
simgear::Emesary::GlobalTransmitter::instance()->NotifyAll(tn);
|
simgear::Emesary::GlobalTransmitter::instance()->NotifyAll(tn);
|
||||||
simgear::Emesary::GlobalTransmitter::instance()->DeRegister(ir);
|
simgear::Emesary::GlobalTransmitter::instance()->DeRegister(ir);
|
||||||
//System.Threading.Thread.Sleep(rng.Next(MaxSleep));
|
//System.Threading.Thread.Sleep(rng.Next(MaxSleep));
|
||||||
noperations++;
|
noperations++;
|
||||||
}
|
}
|
||||||
printf("%s invocations %d\n", temp, (int)r.receiveCount);
|
printf("%s invocations %d\n", temp, (int)r->receiveCount);
|
||||||
printf("finish thread %s\n", temp);
|
printf("finish thread %s\n", temp);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -106,9 +106,9 @@ public:
|
|||||||
|
|
||||||
void testEmesaryThreaded()
|
void testEmesaryThreaded()
|
||||||
{
|
{
|
||||||
TestThreadRecipient r;
|
SGSharedPtr<TestThreadRecipient> r = new TestThreadRecipient;
|
||||||
simgear::Emesary::IReceiverPtr ir(&r);
|
simgear::Emesary::IReceiverPtr ir(r);
|
||||||
TestThreadNotification tn((const char*)&r);
|
TestThreadNotification tn((const char*)r.ptr());
|
||||||
simgear::Emesary::GlobalTransmitter::instance()->Register(ir);
|
simgear::Emesary::GlobalTransmitter::instance()->Register(ir);
|
||||||
for (int i = 0; i < MaxIterations*MaxIterations; i++)
|
for (int i = 0; i < MaxIterations*MaxIterations; i++)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user