順序列印多個執行緒ID

2021-06-27 21:21:55 字數 2137 閱讀 3168

最近面試時,碰到乙個面試題,題目是有3個執行緒,順序列印這三個執行緒的執行緒id多次,例如abcabc...這樣列印。

第一種方法:使用pthread_cond_timedwait或waitforsingleobject,超時時間到了就列印出線程id,每個執行緒設定不同的超時等待時間。

/*

* main.cpp

* * created on: 2023年12月27日

* author: richard

*/#include #include #include pthread_cond_t g_condition;

pthread_mutex_t g_mutex;

void *threadfunc(void *param)

return null;

}int main(int argc, char **argv) ;

for (int i = 0; i < 3; ++i)

for (int i = 0; i < 3; ++i)

pthread_cond_destroy(&g_condition);

pthread_mutex_destroy(&g_mutex);

return 0;

}

#include #include #include handle g_event;

unsigned int __stdcall threadfunc(void *param)

return 0;

}int main(int argc, char **argv)

; for (int i = 0; i < 3; i++)

sleep(10000);

for (int i = 0; i < 3; i++)

closehandle(g_event);

system("pause");

return 0;

}

第二種方法:使用pthread_cond_wait和waitforsingleobject,waitforsingleobject不用指定超時時間,使用3個條件變數或event,主線程中依次呼叫pthread_cond_signal或setevent。

/*

* main.cpp

* * created on: 2023年12月27日

* author: richard

*/#include #include #include pthread_cond_t g_condition[3];

pthread_mutex_t g_mutex;

void *threadfunc(void *param)

return null;

}int main(int argc, char **argv)

pthread_mutex_init(&g_mutex, null);

pthread_t threadid[3];

int index = ;

for (int i = 0; i < 3; ++i)

for (int i = 0; i < 10; ++i)

}for (int i = 0; i < 3; ++i)

for (int i = 0; i < 3; ++i)

pthread_mutex_destroy(&g_mutex);

return 0;

}

#include #include #include handle g_event[3];

unsigned int __stdcall threadfunc(void *param)

return 0;

}int main(int argc, char **argv)

; for (int i = 0; i < 3; i++)

for (int i = 0; i < 10; i++)

}sleep(2000);

for (int i = 0; i < 3; i++)

system("pause");

return 0;

}



多執行緒按順序列印

於leetcode1114 我們提供了乙個類 public class foo public void second public void third 三個不同的執行緒將會共用乙個 foo 例項。請設計修改程式,以確保 second 方法在 first 方法之後被執行,third 方法在 seco...

多執行緒程式設計 3順序列印

主要功能 printa printl printi 定義三個訊號量依次給三個程序上鎖,並且通過其他程序來給自己解鎖 include include include include semaphore.h using namespace std 三個訊號量相當於三個鎖,可以等價替換 semaphore...

學習 多執行緒順序列印ABC

深夜睡不著,更新一波,突然想起了兩個月之前的一次面試的懊悔。為什麼懊悔呢,因為面試官出的題很簡單很簡單,但是我想太多了,導致出糗了。題目,有三個執行緒,按順序列印123。public class test1 extends thread thread b newthread new runnable...