F
Frank Bossy
Dear group 
I don't quite understand the meaning of this paragraph in the qt docu
(http://doc.trolltech.com/3.1/threads.html):
***SNIP
The Signals and Slots mechanism can be used in separate threads, as
long as the rules for QObject based classes are followed. The Signals
and Slots mechanism is synchronous: when a signal is emitted, all
slots are called immediately. The slots are executed in the thread
context that emitted the signal.
***SNIP
Part of my program consists of the following code:
bool
MyBUE::stopServer()
{
QProcess* proc = sd.getProcess(); // already running process
connect(proc, SIGNAL(processExited()), this,
SLOT(aServerHasDied()));
proc->kill();
cout << "###############1" << endl;
int counter = 10; // seconds
cout << "###############2" << endl;
while (proc->isRunning()) {
cout << "###############3" << endl;
m_waiter.wait(1000/*ms*/); // A QWaitCondition
cout << "###############4" << endl;
if (counter-- == 0) break;
cout << "###############5" << endl;
}
if (proc->isRunning()) {
cout << "###############6" << endl;
cout << "Could not terminate process." << endl;
cout << "###############7" << endl;
return false;
}
cout << "Server terminated by stopServer." << endl;
cout << "###############8" << endl;
return true;
}
void
MyBUE::aServerHasDied()
{
m_waiter.wait(5000/*ms*/);
cout << "###XXX###" << endl;
}
I get the following result:
###############1
###############2
###############3
<NO PAUSE!?>
###############4
###############5
<5 SECONDS PAUSE>
###XXX###
Server terminated by stopServer.
###############8
Could please someone explain to me this behaviour? I don't understand
it
Any help would be greatly appreciated
bye,
Frank Bossy
I don't quite understand the meaning of this paragraph in the qt docu
(http://doc.trolltech.com/3.1/threads.html):
***SNIP
The Signals and Slots mechanism can be used in separate threads, as
long as the rules for QObject based classes are followed. The Signals
and Slots mechanism is synchronous: when a signal is emitted, all
slots are called immediately. The slots are executed in the thread
context that emitted the signal.
***SNIP
Part of my program consists of the following code:
bool
MyBUE::stopServer()
{
QProcess* proc = sd.getProcess(); // already running process
connect(proc, SIGNAL(processExited()), this,
SLOT(aServerHasDied()));
proc->kill();
cout << "###############1" << endl;
int counter = 10; // seconds
cout << "###############2" << endl;
while (proc->isRunning()) {
cout << "###############3" << endl;
m_waiter.wait(1000/*ms*/); // A QWaitCondition
cout << "###############4" << endl;
if (counter-- == 0) break;
cout << "###############5" << endl;
}
if (proc->isRunning()) {
cout << "###############6" << endl;
cout << "Could not terminate process." << endl;
cout << "###############7" << endl;
return false;
}
cout << "Server terminated by stopServer." << endl;
cout << "###############8" << endl;
return true;
}
void
MyBUE::aServerHasDied()
{
m_waiter.wait(5000/*ms*/);
cout << "###XXX###" << endl;
}
I get the following result:
###############1
###############2
###############3
<NO PAUSE!?>
###############4
###############5
<5 SECONDS PAUSE>
###XXX###
Server terminated by stopServer.
###############8
Could please someone explain to me this behaviour? I don't understand
it
Any help would be greatly appreciated
bye,
Frank Bossy