Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование объектов одного класса в потоках, многопоточность 
:(
    Опции темы
Karrde
Дата 27.9.2010, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



Вот стало интересно. Если создавать множество потоков, и в каждом отдельно создавать по экземпляру класса(статических методов и переменных нет), то при работе потоков все равно будут конфликты? надо делать синхронизацию? ещё дело осложняется тем, что присутствует длл, к которой идет обращение из методов этого класса. Можно ли сделать полностью независимую друг от друга работу потоков?
PM MAIL   Вверх
Skynin
Дата 27.9.2010, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 1
Всего: 10



Синхронизировать нужно только обращение к одному на всех ресурсу.
В данном случае - место обращения к dll
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
mihryak
Дата 27.9.2010, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



синхронизировать надо только общие для всех потоков ресурсы, т.е. если у тебя в каждом потоке по экземпляру класса, и один поток не обращается никак к другому за ним, то и синхронизация не нужна
про длл, не видя её кода, сказать ничего нельзя, если потоки обращаются к функции, у которой есть, к примеру, статический счётчик, то этот счётчик и будет тем самым общим ресурсом, доступ к которому необходимо синхронизировать
т.е., чтобы работа потоков не зависила друг от друга, нужно избавиться от общих ресурсов, а такие задачи встречаются совсем редко (только в тех случаях, наверное, когда достаточно запустить поток-задачу, и наплевать, каков будет её результат)

Добавлено через 1 минуту и 43 секунды
Цитата(Skynin @  27.9.2010,  22:45 Найти цитируемый пост)
В данном случае - место обращения к dll 

а почему так категорично?

(писал свой ответ, когда топик состоял из одного вопроса)

Добавлено через 12 минут и 42 секунды
в догонку про длл - по-хорошему, она уже должна быть потокобезопасной, т.е. все необходимые для её корректной работы синхронизации уже должны быть внутри

Это сообщение отредактировал(а) mihryak - 27.9.2010, 21:53
PM MAIL ICQ   Вверх
Karrde
Дата 27.9.2010, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



Хммм. проблема в том, что длл-сторонняя, и заглянуть в код к ней нет никакой возможности

Цитата

нужно избавиться от общих ресурсов, а такие задачи встречаются совсем редко

Т.е. ты имеешь в виду, что код без статических счетчиков встречается редко?(( т.е. не прокатит?( Просто дело в том, что именно функции этой длл очень долго выполняются, а учитывая что надо будет одновременно обрабатывать по несколько клиентов(в клиент-серверном приложении), то последний клиент своей инфы при последовательном выполнении в одном потоке может и не дождаться. А так-шанс есть)) поэтому желательно параллельное выполнение функций этой длл независимо друг друга. Но похоже, там все таки есть какие то общие для всей длл-ки ресурсы(не факт, что статические, мот быть просто private структуры, вынесенные за пределы методов).
Есть ли шанс это как нить распараллелить?

Это сообщение отредактировал(а) Karrde - 27.9.2010, 22:36
PM MAIL   Вверх
mihryak
Дата 27.9.2010, 22:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



Цитата(Karrde @  27.9.2010,  23:18 Найти цитируемый пост)
ты имеешь в виду, что код без статических счетчиков встречается редко?

нет smile это был пример, причём крайне надуманный smile имел в виду, что при работе с потоками лбычно нужно дождаться их окончания и как-то обработать результат, вот в этом месте обычно и нужна синхронизация.
или когда все потоки в процессе свой работы обращаются куда-нибудь за данными - тоже это место подлежит синхронизации

Цитата(Karrde @  27.9.2010,  23:18 Найти цитируемый пост)
Но похоже, там все таки есть какие то общие для всей длл-ки ресурсы

на то есть серьёзные основания?
и, вообще, о какой длл идёт речь - .net или обычная? если первое, то можно попробовать рефлектором посмотреть код
повторюсь, выдавать наружу потоконебезопасные методы - дурной тон, так быть не должно, и, что скорее всего, можно вызывать без опасений


PM MAIL ICQ   Вверх
Karrde
Дата 27.9.2010, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



Цитата

 имел в виду, что при работе с потоками обычно нужно дождаться их окончания и как-то обработать результат.

Логично)) ну тут уже кодом полностью управляю я, и с синхронизацией разберусь. делегаты тут, думаю, сработают неплохо. Главное, чтобы результаты длл-ка правильные выдавала)
Длл-ка написана на c++(native). В общем, похоже, хватит мне уже тут теоретизировать, надо попробовать и посмотреть, что и как будет выдавать. Спасибо за помощь))
PM MAIL   Вверх
userdab
Дата 27.9.2010, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 3.9.2010

Репутация: нет
Всего: нет



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0921 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.