2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Теория потокового программирования
Сообщение22.08.2010, 14:48 
Что почитать?

И конкретный вопрос: если объект создан в одном потоке, а его метод вызывается из другого, это неправильно?

 
 
 
 Re: Теория потокового программирования
Сообщение22.08.2010, 16:39 
kuraga в сообщении #346219 писал(а):
если объект создан в одном потоке, а его метод вызывается из другого, это неправильно?
Это нормально. Надо только удостовериться, что объект действительно уже создан, и готов для работы.

 
 
 
 Re: Теория потокового программирования
Сообщение22.08.2010, 16:48 
kuraga в сообщении #346219 писал(а):
если объект создан в одном потоке, а его метод вызывается из другого, это неправильно?
Т.к. память у всех потоков внутри одного процесса общая, то ничего страшного в этом нет. Другое дело, что если этот самый метод работает с данными (хотя бы с полями класса), то тут уже необходимо задуматься о синхронизации по причине возможных конфликтов.
Бывает, правда, что по к-л причинам логика функционирования методов класса может оказаться неприспособленной к вызовам из разных потоков. Так, в Qt все объекты классов, относящихся к работе интерфейса программы, и вызовы методов этих классов обычно размещаются в одном потоке, а остальные потоки для работы с интерфейсом обращаются к "главному" (интерфейсному) потоку через механизм сигналов-слотов.

 
 
 
 Re: Теория потокового программирования
Сообщение22.08.2010, 20:43 
Аватара пользователя
kuraga
Цитата:
другого, это неправильно?

Это проблема. Дело в том что пока ты проверил что объект существует второй поток может его удалить до того как ты успеешь получить указатель на метод или после того как получил но еще не успел вызвать. Советую почитать про OpenMP. Он родился как результат первых исследования много поточных приложений.

 
 
 
 Re: Теория потокового программирования
Сообщение25.08.2010, 20:42 
Ну а если я в Qt вызываю метод объекта, созданного в другом потоке, то он выполняется в текущем?

 
 
 
 Re: Теория потокового программирования
Сообщение11.09.2010, 09:17 
Неважно кто объект создает, код всегда выполняется тем же потоком который вызывает метод, проблемы у потоков только в доступе к данным(памяти), если метод который у тебя вызывается из разных потоков записывает что-то в один и тот-же участок памяти то без синхронизации у тебя в этом месте будут проблемы.

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group