Многопоточное GTK приложение под Windows (Как такое написать?)

Модератор: Модераторы разделов

Аватара пользователя
KonishchevDmitry
Сообщения: 92
ОС: Ubuntu

Многопоточное GTK приложение под Windows

Сообщение KonishchevDmitry »

Буквально неделю назад познакомился с GTK. Начал изучать, все очень нравится, но вот недавно наткнулся в руководстве по GDK (часть Threads) на такой текст:
...
GLib is completely thread safe (all global data is automatically locked), but individual data structure instances are not automatically locked for performance reasons. So e.g. you must coordinate accesses to the same GHashTable from multiple threads.

GTK+ is "thread aware" but not thread safe — it provides a global lock controlled by gdk_threads_enter()/gdk_threads_leave() which protects all use of GTK+. That is, only one thread can use GTK+ at any given time.

Unfortunately the above holds with the X11 backend only. With the Win32 backend, GDK calls should not be attempted from multiple threads at all.
...

Т. е., если я правильно понял, я не смогу написать многопоточное приложение GTK под Windows, в котором каждый поток сможет модифицировать интерфейс программы?

Неужели в данный момент дела обстоят именно так?
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Многопоточное GTK приложение под Windows

Сообщение Zeus »

KonishchevDmitry писал(а):
12.06.2007 19:09
Т. е., если я правильно понял, я не смогу написать многопоточное приложение GTK под Windows, в котором каждый поток сможет модифицировать интерфейс программы?

Я так понимаю достаточно лишь разнести критичные (для GTK) участки кода потоков.
Раз GTK не потокобезопасна, значит нужно самому обеспечить эту "потокобезопасность" и всё.
Спасибо сказали:
Аватара пользователя
KonishchevDmitry
Сообщения: 92
ОС: Ubuntu

Re: Многопоточное GTK приложение под Windows

Сообщение KonishchevDmitry »

Zeus писал(а):
12.06.2007 22:48
Раз GTK не потокобезопасна, значит нужно самому обеспечить эту "потокобезопасность" и всё.

Т. е. самому поставить семафоры перед вызовами GTK функций?

P.S.: Вы уж извините, что задаю такие глупые вопросы. Дело в том, что я ещё ни разу не писал ничего относительно серьёзного под Windows, но есть высокая вероятность того, что в будущем придется портировать программу под неё, и очень хотелось бы быть уверенным, что для этого не придется переписывать всю программу заново.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Многопоточное GTK приложение под Windows

Сообщение v04bvs »

Обычно главный тред программы отвечает за GUI, а остальные треды лишь посылают ему сообщения, которые он и обрабатывает. При таком дизайне проблем не возникает.
Спасибо сказали:
Аватара пользователя
KonishchevDmitry
Сообщения: 92
ОС: Ubuntu

Re: Многопоточное GTK приложение под Windows

Сообщение KonishchevDmitry »

v04bvs писал(а):
12.06.2007 23:45
Обычно главный тред программы отвечает за GUI, а остальные треды лишь посылают ему сообщения, которые он и обрабатывает. При таком дизайне проблем не возникает.
Т. е. используются средства IPC? Но это же сильно усложняет код программы, т. к. нужно на стороне потоков кодировать GTK комманды в сообщения, а на стороне главного потока эти сообщения декодировать в GTK комманды. :wacko: Или я вас не правильно понял?
Спасибо сказали: