کدام thread در حال اجرای تابع می باشد؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

کدام thread در حال اجرای تابع می باشد؟

+1 امتیاز
اگر چند thread یک تابع مشخص را فراخوانی کنند چطور داخل تابع میشه فهمید در حال حاضر کدام Thread در حال اجرای تابع می باشد؟
سوال شده آذر 3, 1393  بوسیله ی shab (امتیاز 194)   8 22 30

3 پاسخ

+3 امتیاز
 
بهترین پاسخ

برای بدست آوردن thread جاری که در حال اجرای تابع شماست بایستی از std::this_thread استفاده کنید و از آنجایی که اطلاع دارید هر thread حاوی یک id هستش که می تونید با متد get_id()  دریافتش کنید. به مثال زیر دقت کنید.

 

#include <iostream>
#include <thread>
#include <chrono>
#include <mutex>
 
std::mutex g_display_mutex;
 
void foo()
{
    std::thread::id this_id = std::this_thread::get_id();
 
    g_display_mutex.lock();
    std::cout << "thread " << this_id << " sleeping...\n";
    g_display_mutex.unlock();
 
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
 
int main()
{
    std::thread t1(foo);
    std::thread t2(foo);
 
    t1.join();
    t2.join();
}

 

پاسخ داده شده آذر 4, 1393 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد دی 4, 1393 بوسیله ی shab
+1 امتیاز
یه پارامتر واسه تابع درست کن وقتی داری نخ ها رو میسازی هر کدومشون رو با یک مقدار متفاوت به تابع وصل کن بعد داخل تابع اون پارامتر رو چک کن.
پاسخ داده شده آذر 4, 1393 بوسیله ی asd666 (امتیاز 100)   1 3 10
+1 امتیاز

در ويندوز به وسيله تابع  GetCurrentThreadId API

پاسخ داده شده آذر 16, 1393 بوسیله ی Sami (امتیاز 178)   2 6 16
...