Was ist besser für Windows? Pthreads oder CreateMutex?

8

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.

    
puffadder 10.07.2009, 15:52
quelle

6 Antworten

3

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.

    
Craig 10.07.2009, 16:04
quelle
7

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

    
Paul Betts 10.07.2009 16:05
quelle
5

Das funktioniert gut: Ссылка

Es ist ein Port der Pthreads-Bibliothek für Windows.

    
Roger Gajraj 15.07.2009 02:23
quelle
1

Das erste, was ich tun würde, ist, unter Linux auf Boost Thread zu portieren als auf Windows.

    
Shing Yip 10.07.2009 16:15
quelle
0

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.

    
Duck 10.07.2009 16:08
quelle
0

Unter Windows C / C ++ müssen Anwendungen, die den CRT verwenden, beginthread / begintreadex aufrufen , um den CRT im neuen Thread ordnungsgemäß zu initialisieren.

    
Remus Rusanu 10.07.2009 16:10
quelle

Tags und Links