Что лучше для окон? Pthreads или CreateMutex? - PullRequest
8 голосов
/ 10 июля 2009

Я портирую свое приложение на Windows из Linux. Я довольно новичок в искусстве портирования приложений на разные платформы. Насколько я знаю, Windows изначально не поддерживает реализацию потоков POSIX. Это правда? Я слышал о некоторой реализации pthreads для Windows (обертка или что-то), было бы лучше использовать их или использовать CreateMutex и другие API, предоставляемые Windows ???? Кто-то пожалуйста. просветите меня с преимуществами и недостатками обоих миров. Некоторые разные советы по переносу будут хорошо сочетаться с ответом.

Заранее спасибо.

Ответы [ 6 ]

7 голосов
/ 10 июля 2009

Все это будет один и тот же материал (pthreads просто будет вызывать EnterCriticalSection и т. Д.), Поэтому, если у вас есть оболочка pthreads, вам, вероятно, следует использовать ее, чтобы вам не пришлось менять столько кода

5 голосов
/ 15 июля 2009

это хорошо работает: http://sourceware.org/pthreads-win32/

Это порт библиотеки pthreads для Windows.

3 голосов
/ 10 июля 2009

Одна вещь, которую вы должны иметь в виду, это будущее этого кода. Планируете ли вы разрабатывать (и выпускать) на обеих платформах в будущем? Или это односторонний порт?

Лучшее, что нужно сделать при переносе проекта, - это сохранить как можно меньше фактических изменений в коде. В вашем случае это будет означать, что нужно пойти по пути решения проблемы. Тем не менее, если вы планируете, чтобы это был порт с односторонним движением, переход на родной порт никогда не повредит. :)

Я бы потратил некоторое время на то, чтобы полностью изучить обе стратегии, а затем реализовать ту, которая вам наиболее удобна.

1 голос
/ 10 июля 2009

Первое, что я сделаю, это портирую на Boost Thread под Linux, а не на Windows.

0 голосов
/ 10 июля 2009

В приложениях Windows C / C ++, использующих CRT, необходимо вызвать beginthread / beginthreadex , чтобы правильно инициализировать CRT в новом потоке.

0 голосов
/ 10 июля 2009

Почему бы не использовать лучшее из обоих миров и не использовать библиотеку, которая оборачивает как pthreads, так и API Window и использует соответствующую библиотеку под обложками? Ваш код остается одинаковым на обеих платформах.

В C ++ нет недостатка в таких библиотеках, поэтому я не могу представить, что версий C нет.

...