2 fuCtor, посомрел код, нужно сделать небольшие правки:
C++ (Qt)
void RTorrentIO::run(){
if(InstanceCount == 1)
{
client = new Client();
client->setHost(hostname,port,path);
}
exec();
if(!InstanceCount) { //удалеям когда нет ниодного экземпляра потока
delete client;
client = 0;
}
}
Но чесно сказать смонительная реализация RTorrentIO. Меня настараживает использование статического члена
client
. Создается в одном потоке, может быть удален в другом.
Доступ к client никак не защищен:
C++ (Qt)
Client * RTorrentIO::operator ->()
{
return client;
}
что будет при попытке одновременной модификации данных client? Правильно, ничего хорошего
Также непонятные дейтвия в конструкторе:
C++ (Qt)
....
if(!InstanceCount)
{
start();
}else
{
quit();
}
InstanceCount++;
....
Если на то дело пошло, то тогда так:
C++ (Qt)
....
if(!InstanceCount)
{
start();
}else
{
quit();
wait();
}
InstanceCount++;
....
Хотя смысла я непонимаю в этом коде.
Диструктор тоже нужно изменить для корректного завершения потока, примерно так:
C++ (Qt)
RTorrentIO::~RTorrentIO()
{
if (isRunning()) {
quit();
wait();
}
}
Так что незнаю что вам подсказать, т.к. незнаю что должно быть.