[問題] sleep or nop 的選擇
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux, GCC 4.4.3
問題(Question):
我目前有一個程式會在main程式一開始會create很多thread出來
create方式大概會像下面:
int main()
{
pthread_t pid_array[10];
for (int i = 0; i < 10; i++) {
pthread_create(&pid_array[i], NULL, func_to_do, NULL);
}
.....
.....
.....
}
而一般情況下,我們在使用pthread_create的時候,並不一定會馬上create完成
通常會需要等待一小段時間,才會把所有thread create完成
可是並不清楚會等待多久的時間
而我目前要做一的等待thread create完成的程式段,來避免沒有create好的問題
我目前有兩個方式可以做:sleep or nop
sleep的部份,我採用的是nanosleep,delay的時間給予500ns
nop的部份,我是直接使用C-inline asm的方式
sleep part:
int main()
{
pthread_t pid_array[10];
for (int i = 0; i < 10; i++) {
pthread_create(&pid_array[i], NULL, func_to_do, NULL);
}
nanosleep(&timedelay, NULL);
.....
.....
}
nop part:
int main()
{
pthread_t pid_array[10];
for (int i = 0; i < 10; i++) {
pthread_create(&pid_array[i], NULL, func_to_do, NULL);
}
asm("nop"); //只插一個nop而已
.....
.....
}
請問一下,哪一種方式不會浪費太多的等待時間呢?
還請各位先進指點一下,謝謝
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.105.91
→
04/19 13:21, , 1F
04/19 13:21, 1F
→
04/19 13:28, , 2F
04/19 13:28, 2F
→
04/19 13:29, , 3F
04/19 13:29, 3F
推
04/19 13:46, , 4F
04/19 13:46, 4F
→
04/19 13:47, , 5F
04/19 13:47, 5F
推
04/19 13:59, , 6F
04/19 13:59, 6F
→
04/19 14:01, , 7F
04/19 14:01, 7F
推
04/19 14:19, , 8F
04/19 14:19, 8F
→
04/19 14:20, , 9F
04/19 14:20, 9F
→
04/19 14:48, , 10F
04/19 14:48, 10F
→
04/19 16:34, , 11F
04/19 16:34, 11F
→
04/19 16:35, , 12F
04/19 16:35, 12F
→
04/19 16:35, , 13F
04/19 16:35, 13F
推
04/19 21:30, , 14F
04/19 21:30, 14F