|
a/src/common/rclinit.cpp |
|
b/src/common/rclinit.cpp |
|
... |
|
... |
123 |
perror("Sigaction failed");
|
123 |
perror("Sigaction failed");
|
124 |
}
|
124 |
}
|
125 |
}
|
125 |
}
|
126 |
}
|
126 |
}
|
127 |
|
127 |
|
128 |
|
|
|
129 |
// Make sure the locale charset is initialized (so that multiple
|
128 |
// Make sure the locale charset is initialized (so that multiple
|
130 |
// threads don't try to do it at once).
|
129 |
// threads don't try to do it at once).
|
131 |
config->getDefCharset();
|
130 |
config->getDefCharset();
|
132 |
|
131 |
|
133 |
mainthread_id = pthread_self();
|
132 |
mainthread_id = pthread_self();
|
|
... |
|
... |
144 |
unac_set_except_translations(unacex.c_str());
|
143 |
unac_set_except_translations(unacex.c_str());
|
145 |
|
144 |
|
146 |
#ifndef IDX_THREADS
|
145 |
#ifndef IDX_THREADS
|
147 |
ExecCmd::useVfork(true);
|
146 |
ExecCmd::useVfork(true);
|
148 |
#else
|
147 |
#else
|
|
|
148 |
// Keep threads init behind log init, but make sure it's done before
|
|
|
149 |
// we do the vfork choice !
|
|
|
150 |
config->initThrConf();
|
149 |
bool intern_noThr = config->getThrConf(RclConfig::ThrIntern).first == -1;
|
151 |
bool intern_noThr = config->getThrConf(RclConfig::ThrIntern).first == -1;
|
150 |
bool split_noThr = config->getThrConf(RclConfig::ThrSplit).first == -1;
|
152 |
bool split_noThr = config->getThrConf(RclConfig::ThrSplit).first == -1;
|
151 |
bool write_noThr = config->getThrConf(RclConfig::ThrDbWrite).first == -1;
|
153 |
bool write_noThr = config->getThrConf(RclConfig::ThrDbWrite).first == -1;
|
152 |
if (intern_noThr && split_noThr && write_noThr) {
|
154 |
if (intern_noThr && split_noThr && write_noThr) {
|
153 |
LOGDEB0(("rclinit: single-threaded execution: use vfork\n"));
|
155 |
LOGDEB0(("rclinit: single-threaded execution: use vfork\n"));
|