Я вижу различные способы запуска потоков в ubuntu и на другой платформе linux.Выполнение резьбы: как обеспечить систематический запуск нити
pthread_create (&thread1, NULL, (void *) &myfun1, (void *) msg1);
pthread_create (&thread2, NULL, (void *) &myfun2, (void *) msg2);
pthread_create (&thread3, NULL, (void *) &myfun3, (void *) msg3);
pthread_create (&thread4, NULL, (void *) &myfun4, (void *) msg4);
В приведенном выше случае убунту, сначала thread4 начинает в то время как в случае с другой операционной системы Linux это thread1. Когда я проверил причину, похоже, из-за политики планирования (исправьте меня, если я ошибаюсь).
В этих случаях, чтобы гарантировать, что всегда первый поток (thread1) выполняется первым, несмотря на различные вкусы linux.
/Общий запрос /, не зависит ли политика планирования от ядра? Потому что два разных типа выполнения потоков видны в разных вариантах linux.
Он лежит в природе асинхронности о том, что является asynchon. Без дополнительной механики синхронизации (мьютексы/условия) вы не можете предсказать порядок выполнения потоков (или даже запуска). – alk
ok synch мы можем добавить после начала потока. Но до создания потока как обеспечить? – BUGGY
Вы должны предположить, что любой поток в любое время можно приостановить, чтобы дать время обработки другому потоку. Итак, если вам удалось запустить их в надежном порядке, это все равно ничего вам не даст. Я думаю, что все, что вы думаете, чего вы можете достичь, это иллюзия, и вы должны описать, какова ваша фактическая проблема. Кроме того, вы, кажется, нацелились на такой язык C-ish, но какой именно это? Пока вы на нем, добавьте «многопоточность» в список тегов. –