Cách in id luồng bằng cách sử dụng qDebug()
trên môi trường cửa sổ của Qt
.Id chủ đề trong Qt
Trả lời
Tôi giả sử bạn muốn thread id của thread hiện đang thực hiện (và không phải là thread id của một đối tượng QThread cụ thể):
qDebug() << QThread::currentThreadId();
Những điều cần xem xét: Phương pháp này trả về một id cụ nền tảng (kiểm tra docs). Trong các cửa sổ, bạn không thể sử dụng id này với các hàm API Win32 vì nó trả về một id giả và không phải là id luồng thực.
Nếu ứng dụng của bạn sẽ chỉ chạy trong Windows và bạn cần phải làm điều gì đó có ý nghĩa với id chuỗi có thể là tốt nhất nếu bạn sử dụng GetCurrentThreadId().
Trên các cửa sổ, các ứng dụng thường "hủy" từ dòng lệnh khi bạn thực thi chúng. Nếu bạn thêm
win32:CONFIG+=console
ứng dụng của bạn sẽ chặn lời nhắc lệnh và in câu lệnh qDebug.
Kể từ khi thực hiện cơ bản của một QThread là pthreads, bạn có thể sử dụng (I "m giả sử bạn muốn có một ID có thể sử dụng)
pthread_t = pthread_self();
từ bên trong các chủ đề được thực hiện.
Các giá trị trả về từ QThread :: currentThreadId() không phải là di động
Điều bạn có thể có nghĩa là: http://doc.qt.nokia.com/4.7/qthread.html#currentThreadId – mbx
-1 Vì câu hỏi cụ thể yêu cầu cách lấy ID luồng trong Qt. Qt hỗ trợ nhiều nền tảng. –
Điều này vẫn đúng không? Tôi thấy rằng currentThreadId() trả về một handle (http://qt-project.org/doc/qt-4.8/qthread.html#currentThread), mà có lẽ sẽ khác nhau mỗi khi nó được gọi. Bạn không muốn sử dụng QThread :: cur rentThread() thay vào đó, đó là một con trỏ đến cấu trúc dữ liệu luồng? –