From f5ff1a8e934a3f4a9f5c41b258b4ba9a959a722f Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Mon, 10 Aug 2009 14:02:37 +0000 Subject: [PATCH] bug 1303: more outputsection debug info --- RTCP/IONProc/src/ION_main.cc | 2 +- RTCP/IONProc/src/OutputThread.cc | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/RTCP/IONProc/src/ION_main.cc b/RTCP/IONProc/src/ION_main.cc index c74a9781c65..4fc72d85487 100644 --- a/RTCP/IONProc/src/ION_main.cc +++ b/RTCP/IONProc/src/ION_main.cc @@ -461,7 +461,7 @@ void *master_thread(void *) exit(1); } - LOG_DEBUG("lofar__fini: output thread joined"); + LOG_DEBUG("lofar__fini: output section joined"); } #if defined FLAT_MEMORY diff --git a/RTCP/IONProc/src/OutputThread.cc b/RTCP/IONProc/src/OutputThread.cc index c20cd2d15fd..65c54f66e8d 100644 --- a/RTCP/IONProc/src/OutputThread.cc +++ b/RTCP/IONProc/src/OutputThread.cc @@ -103,28 +103,35 @@ void OutputThread::mainLoop() doNotRunOnCore0(); #endif + // set the maximum number of concurrent writers static Semaphore semaphore(1); while ((o = itsSendQueueActivity.remove()) >= 0) { struct OutputThread::SingleOutput &output = itsOutputs[o]; + std::cout << "OutputThread: pop queue " << o << std::endl; data = output.sendQueue.remove(); + std::cout << "OutputThread: lower semaphore " << std::endl; + semaphore.down(); + try { - semaphore.down(); + std::cout << "OutputThread: write data for queue " << o << std::endl; // write header: nr of output itsStreamToStorage->write( &o, sizeof o ); // write data, including serial nr data->write(itsStreamToStorage, true); - - semaphore.up(); - output.freeQueue.append(data); } catch (...) { + semaphore.up(); output.freeQueue.append(data); throw; } + + std::cout << "OutputThread: raise semaphore and wait for next element " << std::endl; + semaphore.up(); + output.freeQueue.append(data); } } -- GitLab