Cross-Plattform-Weg, woraus sich ein thread in C/C++?
In C und C++ gibt es eine cross-Plattform-Weg, woraus sich ein thread?
So etwas wie sched_yield() oder Sleep(0)?
Tut SDL_Delay(0) immer Ausbeute oder wird es sofort wieder in einigen Implementierungen?
- yield() ist oft ein schlechtes design. Wenn Sie brauchen, um für etwas warten, dann warten, bis es explizit über eine Ereignis -, signal-oder Bedingung irgendeiner Art.
- Beachten Sie, dass es unmöglich ist, zu schreiben, eine version von "Ausbeute", die immer nachgeben. Was ist, wenn es keinen anderen thread den Vortritt? Ich würde sagen, dass SDL SDL_Delay(0) macht genau das, was Sie es haben wollen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gegeben, dass weder C noch C++ (C++98) hat "threads," es gibt kein cross-Plattform-Möglichkeit für ein thread zum yield.
In C++0x gibt es eine Funktion
std::this_thread::yield()
genannt werden kann, sich zu ergeben. Das wird der portable Weg für einen thread zu ergeben, sobald die Menschen starten Sie mit dem C++0x-threads Bibliothek.in der c++ - Fall,
boost::thread::yield()
tut, was Sie Fragen. Auf Plattformen mit posix-threads,pthread_yield()
führt die gleiche Funktion für C und alles, was links mit ihm. Auf Plattformen, wo dies nicht sofort aufhören den thread und starten Sie ein anderes, es ist, weil der scheduler nicht unterstützen diese Funktionalität. Ich glaube nicht, dass viele solcher Plattformen tatsächlich existieren in der wildnis.Sleep
mit einer Frist von 0 zu ergeben.