LINUX.ORG.RU

Какие различия в использовании mutex'ов в Си и Си++?


0

1

В чем основные различия в использовании pthread_mutex на Си и Си++?

P.S. Собираюсь игру переписывать с Си на Си++ (персонажи для нее уже нарисованы Рустамом aka sodium.chloride/NaCl).
Хочу сразу узнать об основных сложностях перевода.
В игре буду использоваться TCP-сокеты, pthreads, pthread_mutex; возможно - select'ы (с селектами еще дела не имел).

★★★★★

Никаких, разве что принято RAII-обертки разные использовать, см. boost::mutex::scoped_lock, QMutexLocker, etc.

mannaz
()
Ответ на: комментарий от anonymous

> Ну и использование непосредственно pthreads ни кто не запрещает.

То есть, ничего страшного, если я запущу отдельной нитью метод класса? Например, TGame::DrawWindow(void *p).
Или, принято это как-то по-другому делать?

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

В pthread_create ты этот метод просто так не скормишь без обертки, т.к. метод для вызова требует объект. Чтобы это не велосипедить, лучше использовать boost::thread. А для tcp и вместо select лучше взять boost::asio.

ratatosk
()

>В чем основные различия в использовании pthread_mutex на Си и Си++?

В плюсах можно юзать более кошерные бустовские примитивы синхронизации

yoghurt ★★★★★
()
Ответ на: комментарий от pacify

>Чтобы освободиться от проприетарного кода (своего, но - переданного заказчику).

И код был «красивее». Там много глобальных переменных.

Перепиши еще раз на Си, не повторяя старых ошибок.

Тащить сюда с++ глупо.

Waterlaz ★★★★★
()
Ответ на: комментарий от Reset

> лучше перепиши на одном из Ъ-языков :)

Так сразу бы и сказали, что надо переписать на CL )))

anonymous
()
Ответ на: комментарий от Reset

> лучше перепиши на одном из Ъ-языков :)

Кстати, да. Можно попробовать Питон.
Правда, import curses там иногда не работал.
Но с OpenGL он справляется отлично.

pacify ★★★★★
() автор топика

Все просто. Разные языки с разной идеалогией

По русски: не должно быть методов lock, unlock

namezys ★★★★
()
Ответ на: комментарий от yoghurt

>Ты хотел сказать volatile?

Даже если и так - не понимаю, почему volatile каждый раз вспоминают, когда речь заходит о многопоточном программировании.

V_L_A_D ★★
()
Ответ на: комментарий от V_L_A_D

> почему volatile каждый раз вспоминают когда речь заходит о многопоточном программировании.

Наверное, его вспоминают в основном старые программисты, которым ничего кроме него из «многопоточного» не рассказывали?

Я, например, до сих пор чётко не уяснил для себя - что такое volatile. Вроде, инструкция, «советующая» процессору не кэшировать значение переменной. На случай, если ей пользуются другие потоки/процессы.

pacify ★★★★★
() автор топика
Ответ на: комментарий от V_L_A_D

volatile заставляет не кешировать значение переменной. Что будет, если во многопроцессорной системе одна и та же переменная в разных кешах будет представлена разными значениями, сам подумай :)

yoghurt ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.