Skip to content

Commit 6ca003a

Browse files
committed
ensure equipment thread terminated when desctructor called
1 parent 00f40ba commit 6ca003a

File tree

6 files changed

+15
-3
lines changed

6 files changed

+15
-3
lines changed

src/ReadoutEquipmentCruEmulator.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,9 @@ ReadoutEquipmentCruEmulator::ReadoutEquipmentCruEmulator(ConfigFile& cfg, std::s
138138
payloadDistrib = std::normal_distribution<> (cfgPayloadSize, cfgPayloadSizeStdev * cfgPayloadSize);
139139
}
140140

141-
ReadoutEquipmentCruEmulator::~ReadoutEquipmentCruEmulator() {}
141+
ReadoutEquipmentCruEmulator::~ReadoutEquipmentCruEmulator() {
142+
abortThread();
143+
}
142144

143145
Thread::CallbackResult ReadoutEquipmentCruEmulator::prepareBlocks()
144146
{

src/ReadoutEquipmentDummy.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ ReadoutEquipmentDummy::ReadoutEquipmentDummy(ConfigFile& cfg, std::string cfgEnt
5858
}
5959
}
6060

61-
ReadoutEquipmentDummy::~ReadoutEquipmentDummy() {}
61+
ReadoutEquipmentDummy::~ReadoutEquipmentDummy() {
62+
abortThread();
63+
}
6264

6365
DataBlockContainerReference ReadoutEquipmentDummy::getNextBlock()
6466
{

src/ReadoutEquipmentPlayer.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ ReadoutEquipmentPlayer::ReadoutEquipmentPlayer(ConfigFile& cfg, std::string cfgE
187187

188188
ReadoutEquipmentPlayer::~ReadoutEquipmentPlayer()
189189
{
190+
abortThread();
190191
fpLock.lock();
191192
if (fp != nullptr) {
192193
fclose(fp);

src/ReadoutEquipmentRORC.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,9 @@ ReadoutEquipmentRORC::ReadoutEquipmentRORC(ConfigFile& cfg, std::string name) :
195195
isInitialized = true;
196196
}
197197

198-
ReadoutEquipmentRORC::~ReadoutEquipmentRORC() {}
198+
ReadoutEquipmentRORC::~ReadoutEquipmentRORC() {
199+
abortThread();
200+
}
199201

200202
Thread::CallbackResult ReadoutEquipmentRORC::prepareBlocks()
201203
{

src/ReadoutEquipmentZmq.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ ReadoutEquipmentZmq::ReadoutEquipmentZmq(ConfigFile& cfg, std::string cfgEntryPo
193193

194194
ReadoutEquipmentZmq::~ReadoutEquipmentZmq()
195195
{
196+
abortThread();
196197

197198
// stopping snapshot thread
198199
if (snapshotThread != nullptr) {

src/mainReadout.cxx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1640,6 +1640,10 @@ int Readout::reset()
16401640

16411641
theLog.log(LogInfoDevel, "Releasing readout devices");
16421642
for (size_t i = 0, size = readoutDevices.size(); i != size; ++i) {
1643+
if (readoutDevices[i] != nullptr) {
1644+
// ensure readout equipment threads stopped before releasing resources
1645+
readoutDevices[i]->abortThread();
1646+
}
16431647
readoutDevices[i] = nullptr; // effectively deletes the device
16441648
}
16451649
readoutDevices.clear();

0 commit comments

Comments
 (0)