多线程还是有问题,时不时闪退
This commit is contained in:
+13
-6
@@ -29,7 +29,8 @@ quint32 ipv4str_to_int(const QString& ipstr)
|
|||||||
void trytry::run()
|
void trytry::run()
|
||||||
{
|
{
|
||||||
qDebug() << ipstr<<":"<< ipint;
|
qDebug() << ipstr<<":"<< ipint;
|
||||||
*now_thread_num++;
|
*now_thread_num+=1;
|
||||||
|
|
||||||
QTcpSocket m_socket;
|
QTcpSocket m_socket;
|
||||||
m_socket.connectToHost(ipstr, ipint, QTcpSocket::ReadWrite);
|
m_socket.connectToHost(ipstr, ipint, QTcpSocket::ReadWrite);
|
||||||
if (m_socket.waitForConnected(timeout))
|
if (m_socket.waitForConnected(timeout))
|
||||||
@@ -39,10 +40,14 @@ void trytry::run()
|
|||||||
}
|
}
|
||||||
m_socket.disconnectFromHost();
|
m_socket.disconnectFromHost();
|
||||||
m_socket.disconnect();
|
m_socket.disconnect();
|
||||||
*now_thread_num--;
|
*now_thread_num-=1;
|
||||||
|
|
||||||
*nt_bar++;
|
*nt_bar+=1;
|
||||||
the_bar->setValue(((*nt_bar)/(*t_bar))*100);
|
//((*nt_bar)/(*t_bar))*100
|
||||||
|
//the_bar->setValue(((0.0+*nt_bar)/(*t_bar))*100);
|
||||||
|
//qDebug()<<((0.0+*nt_bar)/(0.0+*t_bar))*100<<"%";
|
||||||
|
//the_bar->setValue(10);
|
||||||
|
qDebug()<<*nt_bar<<"/"<<*t_bar;
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch::dispatch()
|
dispatch::dispatch()
|
||||||
@@ -82,6 +87,7 @@ void dispatch::run()
|
|||||||
{
|
{
|
||||||
//qDebug()<< ui->IP_list->toPlainText();
|
//qDebug()<< ui->IP_list->toPlainText();
|
||||||
|
|
||||||
|
//the_bar->setValue(20);
|
||||||
|
|
||||||
QTcpSocket* m_socket = new QTcpSocket;
|
QTcpSocket* m_socket = new QTcpSocket;
|
||||||
|
|
||||||
@@ -128,7 +134,8 @@ void dispatch::run()
|
|||||||
}
|
}
|
||||||
|
|
||||||
t_bar=ips_num*ports_num;
|
t_bar=ips_num*ports_num;
|
||||||
//qDebug()<<
|
nt_bar=0;
|
||||||
|
//qDebug()<<*t_bar;
|
||||||
//*****************************
|
//*****************************
|
||||||
for (int i = 0; i < str_ip_list.size(); ++i)
|
for (int i = 0; i < str_ip_list.size(); ++i)
|
||||||
{
|
{
|
||||||
@@ -192,7 +199,7 @@ void dispatch::run()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//sleep(1);//稍微等一下其他线程完成
|
sleep(1);//稍微等一下其他线程完成
|
||||||
emit dispatch_finish();
|
emit dispatch_finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public:
|
|||||||
quint16 set_thread_num;
|
quint16 set_thread_num;
|
||||||
quint16 now_thread_num;
|
quint16 now_thread_num;
|
||||||
quint16 timeout;
|
quint16 timeout;
|
||||||
quint64 t_bar;
|
quint64 t_bar=0;
|
||||||
quint64 nt_bar=0;
|
quint64 nt_bar=0;
|
||||||
|
|
||||||
QThread* main_thread;
|
QThread* main_thread;
|
||||||
|
|||||||
@@ -22,14 +22,17 @@ Widget::Widget(QWidget *parent)
|
|||||||
|
|
||||||
//qDebug("hello world");
|
//qDebug("hello world");
|
||||||
|
|
||||||
//ui->type_bar->setValue(10);
|
|
||||||
|
|
||||||
|
|
||||||
main_thread = new QThread(this);
|
main_thread = new QThread(this);
|
||||||
main_thread->start();
|
main_thread->start();
|
||||||
connect(ui->stard_scan, &QPushButton::pressed, [=]()
|
connect(ui->stard_scan, &QPushButton::pressed, [=]()
|
||||||
{
|
{
|
||||||
|
|
||||||
dispatch* dispatch_thread;
|
dispatch* dispatch_thread;
|
||||||
dispatch_thread = new dispatch;
|
dispatch_thread = new dispatch;
|
||||||
|
|
||||||
dispatch_thread->ip_list = ui->IP_list;
|
dispatch_thread->ip_list = ui->IP_list;
|
||||||
dispatch_thread->port_list = ui->port_list;
|
dispatch_thread->port_list = ui->port_list;
|
||||||
dispatch_thread->output_list = ui->outputlist;
|
dispatch_thread->output_list = ui->outputlist;
|
||||||
|
|||||||
+2
-1
@@ -26,7 +26,8 @@ public:
|
|||||||
|
|
||||||
QThread* main_thread;
|
QThread* main_thread;
|
||||||
|
|
||||||
|
quint64 *t_bar;
|
||||||
|
quint64 *nt_bar;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::Widget* ui;
|
Ui::Widget* ui;
|
||||||
|
|||||||
Reference in New Issue
Block a user