Ich portiere meine Anwendung auf Windows von Linux. Ich bin ziemlich neu in der Kunst der Portierung von Anwendungen auf Plattformen. Soweit ich weiß, unterstützt Windows die POSIX-Thread-Implementierung nicht nativ. Ist das wahr? Ich habe von einigen Implementierungen von Pthreads für Windows (ein Wrapper oder etwas) gehört, wäre es besser, sie zu verwenden oder CreateMutex und andere APIs von Windows verwenden? Jemand pls. Erleuchte mich mit den PROs und CONs beider Welten. Einige andere Tipps für die Portierung würden gut zusammen mit der Antwort gehen.
Vielen Dank im Voraus.
Eine Sache, die Sie im Auge behalten sollten, ist die Zukunft dieses Codes. Planen Sie, in Zukunft auf beiden Plattformen zu entwickeln (und zu veröffentlichen)? Oder ist das ein Einweghafen?
Wenn Sie ein Projekt portieren, ist es am besten, die tatsächlichen Änderungen am Code so gering wie möglich zu halten. In Ihrem Fall würde dies bedeuten, mit einer Pthread-Lösung zu gehen. Davon abgesehen, wenn du vorhast, dass es ein One-Way-Port ist, schmerzt es nie, wenn du heimisch wirst. :)
Ich würde einige Zeit brauchen, um beide Strategien gründlich zu untersuchen und dann die zu implementieren, mit der Sie sich am wohlsten fühlen.
Es wird alles dasselbe sein (pthreads wird nur EnterCriticalSection aufrufen), wenn Sie also einen pthreads-Wrapper haben, sollten Sie ihn wahrscheinlich verwenden, damit Sie nicht so viel Code ändern müssen
Warum nicht das Beste aus beiden Welten und eine Bibliothek verwenden, die sowohl Pthreads als auch Window's API umschließt und die passende unter den Covern verwendet? Ihr Code bleibt auf beiden Plattformen gleich.
Es gibt keinen Mangel an solchen Bibliotheken in C ++, daher kann ich mir nicht vorstellen, dass es keine C-Versionen gibt.
Unter Windows C / C ++ müssen Anwendungen, die den CRT verwenden, beginthread / begintreadex aufrufen , um den CRT im neuen Thread ordnungsgemäß zu initialisieren.