2009-06-05 25 views

Trả lời

16

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().

+1

Đ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? –

0

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.

-3

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

+0

Điều bạn có thể có nghĩa là: http://doc.qt.nokia.com/4.7/qthread.html#currentThreadId – mbx

+4

-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. –

Các vấn đề liên quan