|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Доброе время суток.Помогите советом, несколько дней бьюсь, все перепробовал. Никак не могу разобраться в чем проблема, есть dll, которая забирает данные с устройств по TCPIP при однопоточности все норм, а при использовании многопоточности все зависает, а иногда и проскакивает и к тому же не все потоки отрабатывают... В чем может быть причина? Код не сложный: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 11:15 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Как понял, зависает при вызове функции Connect.execReadRequest(p, rl); ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 11:17 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldar, авторпри однопоточности все норм, а при использовании многопоточности не понял, при какой много поточности? на ой стороне, при передаче, или многопоточность на приеме? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 11:49 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Где-то в степи, при приеме. Мной используемая dll опрашивает удаленные контроллеры по TCPIP. При опросе в один поток, все нормально, но медленно, решил сделать многопоточность, зависает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 11:57 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Еще, если к примеру сделать 2 потока, то отрабатывает, 3 потока отрабатывает чаще, а если больше 4х зависает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 11:59 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldar, кто вам посоветовал эту реализацию - убейте ( или друга или мозг) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:03 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Где-то в степи, убиваю свой мозг. А в чем собственно ошибка, я новичок... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:12 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldar, если на приём идёт один поток данных на один порт, то и принимать его можно только в один поток. Зависает, я думаю, по классической причине гонки: один поток начинает чтение данных, потом другой поток дочитывает эти данные, а первому уже не остаётся, но он продолжает ждать их. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:16 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
petalvik, На немецком форуме обсуждающие эту библиотеку пишут, что используют в многопоточности до 50 потоков. Но увы не приводят примеры, а я не знаю немецкого чтоб правильно задать им вопрос)... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:20 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldar, сокет -> Слушатель ( ваша длл)->(ложим задание)потоконезависимая очередь -> пул потоков, которые берут задания из очереди ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:23 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldarpetalvik, На немецком форуме обсуждающие эту библиотеку пишут, что используют в многопоточности до 50 потоков. Но увы не приводят примеры, а я не знаю немецкого чтоб правильно задать им вопрос)... скорее всего не разобрались с библиотекой, а ломитесь с какого то банального копипаста.. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:28 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Где-то в степиldar, сокет -> Слушатель ( ваша длл)->(ложим задание)потоконезависимая очередь -> пул потоков, которые берут задания из очереди А где про это можно почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:32 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Где-то в степиldarpetalvik, На немецком форуме обсуждающие эту библиотеку пишут, что используют в многопоточности до 50 потоков. Но увы не приводят примеры, а я не знаю немецкого чтоб правильно задать им вопрос)... скорее всего не разобрались с библиотекой, а ломитесь с какого то банального копипаста.. В мануале по dll кроме простенького примера ничего нет, да все функции которые есть, они все в примеру участвуют который я привел. Как я понял из немецкого форума, они на каждый поток создают свое соединение. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:39 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldar,авторА где про это можно почитать? вы как то обескуражили меня, чет тут читать, сел и пиши.. а лучше разберитесь с библиотекой, если она промышленная, то там асинхронность уже вшита ( имхо) (немцы они не только потрахаться..) дайте ссылку на нее, может кто и посмотрит. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:39 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Где-то в степи, http://www.sps-forum.de/simatic/56572-s7-libnodave-framelaenge-groesser-240-bytes-2.html ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 12:42 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldar, само ядро написано на с++, а libnodave.net.dll просто обертка. что там на форуме подразумевал товарищ-ганс под многопоточностью, скорее в разных потоках слушать разные порты но не один, однозначно.. ток что делайте обертку над этой либой, или тупо, как я предложил ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 13:12 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
По libnodave доуха обсуждений и примеров на аглицком... нет ни какого смысла дрючить контроллер в 100 потоков... один поток на контроллер на чтение один на обработку, если нужно... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 13:15 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Где-то в степи, извиняюсь за глупый вопрос, а зачем делать обертку если она имеется. А не может быть проблема, в том, что я использую одну обертку для всех потоков, просто в этой обертке используется указатель. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 13:24 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
buser, За один запрос можно вытащить 220 Байт, для меня это мало, мне нужно около 7000. За один запрос уходит 150 мс это время выполнение функции execReadRequest(p, rl); , при цикличном опросе занимает больше 10 секунд, дискретность получается высокой. Может что то надо настроить, почему может быть так много 150 мс. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 13:45 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldar, пробежался по гуглу, уже сделали обертку DotNetSiemensPLCToolBoxLibrary, не пробовали? я могу ошибаться, мельком взглянул доки, размер получаемого запроса можно регулировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 01:37 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
Где-то в степи, спасибо за активную помощь мне, я смотрел эту библиотеку, там все равно за один запрос больше 220 байт не вытащишь, т.к. это ограничение устройства с которого тяну данные...Как то же вытаскивают данные другие люди, пока это покрыто тайной... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 06:09 |
|
Зависает при многопоточности
|
|||
---|---|---|---|
#18+
ldar, удалось решить проблему? столкнулся с подобной бедой, и не знаю что делать... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 09:20 |
|
|
start [/forum/topic.php?fid=20&msg=38633138&tid=1402656]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 319ms |
total: | 451ms |
0 / 0 |