LINUX.ORG.RU

Вопрос про GThread'ы из GLib


0

0

Народ. Как мы поняли, g_thread_create не создаёт "настоящий" тред, а лишь логический. И функции другого треда начинает выполнять по выходу из текущей функции первого треда. А можно ли их каким-нибудь флагом сделать параллельными? Или если нельзя - нет ли такого же красивого (типа g_thread_create) способа сделать параллельные треды. Не хочется заморачиваться с fork'ами.

anonymous

Я думаю, Вы неправильно поняли. g_thread_create создает обычный thread, выполняющийся параллельно. Единственно, что glib может быть скомпилирована без поддержки thread'ов. Но это редкость.

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

Так то оно так, но при тесте, при вызове любого сигнал хандлера и до его окончания другой тред не подает признаков жизни. Почему?

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

Так как glib - thread safe library, то все важные операции защищены мьютексами. Вашим тредам, скорее всего, ресурса не хватает, какого-то.

Хотя лучше пример привести, возможно что-то и не правильно.

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

А как с GTK?

Прошу прощения, что вклиниваюсь не совсем по теме. Насколько я понимаю - GTK использует glib. Стало быть я могу использовать glib-thread в своей проге на С/gtk++ ?

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

То есть thread'ы использовать можно, но нужно следить за доступом к gtk'шным ресурсам, например, к gtk-шной памяти.

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

> Так как glib - thread safe library, то все важные операции защищены мьютексами. Вашим тредам, скорее всего, ресурса не хватает, какого-то.

Скорее всего так и есть. Спасибо, надо код проверить везде. А можно как-то убрать мутексы?

> Хотя лучше пример привести, возможно что-то и не правильно.

Пример слишком большой получится, так что шляпа.

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