Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Нужна помощь!! Создал структуру IPADDRESS, а потом прикрутил его в вектор ipAddress_vec. Там где 111...1 я его заполняю. Там где 222...2 пытаюсь его запустить функцию getDataCPU в нескольких потоках через _beginthreadex, в зависимости от того, сколько элементов в ipAddress_vec. В функции getDataCPU происходит простой вывод на экран, и тут проблема становится очевидной. Выводит на экран только последний элемент вектора для всех 3-х случаев. (Смотри прин-скрин командной строки.) Гугление не помогает. Как быть? Что делать? Спасибо большое! Переменные: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Кусок кода main: Код: plaintext 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. getDataCPU: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 14:44 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
Классическая ошибка. Вызов: Код: plaintext 1. не означает что выполнится и потом выйдет из beginthreadex() и пойдет дальше Код: plaintext 1. реально происходит так первый поток вызывает несколько раз beginthreadex(), а уже потом созданные потоки выполняют чтение pArguments, в котором первый поток видит то что предназначено не ему, а последующим. PS Запутался в твоих указателях, как подправить не скажу, передавай в параметрах адрес структуры, а не адрес указателя на структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 14:59 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
Помедитируй над этим кодом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Попробуй Sleep(100); разремить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 15:14 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
Dima T, На моем примере помогло, спасибо! Но в реальном примере функция getDataCPU намного больше и работает для некоторых IP-ишников на порядок дольше(может быть до минуты). Час попробую функцию getDataCPU вернуть в реальное состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 15:20 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
vadipokНа моем примере помогло, спасибо! Я у Sleep(100) поставил не для того чтобы ты его к себе скопипастил Добейся чтоб мой пример работал корректно без слипа. Повторяю проблема в том что передается указатель на i, а в момент чтения по адресу этого указателя в i совсем другое значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 15:28 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
Dima TvadipokНа моем примере помогло, спасибо! Я у Sleep(100) поставил не для того чтобы ты его к себе скопипастил Добейся чтоб мой пример работал корректно без слипа. Повторяю проблема в том что передается указатель на i, а в момент чтения по адресу этого указателя в i совсем другое значение. , работает же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 15:30 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
vadipok, работает же Подумай как работает: Запускается 1-й поток, пауза 100 мс (за это время он уже завершается), второй, пауза и т.д. быстрее будет по очереди thread() вызвать 4 раза, последовательно без пауз и лишних потоков т.е. так Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 15:35 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
Dima Tvadipok, работает же Подумай как работает: Запускается 1-й поток, пауза 100 мс (за это время он уже завершается), второй, пауза и т.д. быстрее будет по очереди thread() вызвать 4 раза, последовательно без пауз и лишних потоков т.е. так Код: plaintext 1. 2. 3. 4. Да я это понял, только пока не знаю как. Работаю на этим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 15:42 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
vadipok, работает же Это можно распечатать и на стенку повесить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 17:53 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
Решил я проблему, возможно не очень красиво. ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Основной смысл в том, что не передаю всю структуру, а только номер шага. Потом вытаскиваю от вектора. Следующий вопрос остается открытым, как дождаться, чтобы все процессы завершились? Следующего кода явно не достаточно(Над решением Sleep уже посмеялись ): Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 18:47 |
|
||
|
Опять вопросы про _beginthreadex
|
|||
|---|---|---|---|
|
#18+
vadipokРешил я проблему, возможно не очень красиво. ) Правильно решил. vadipokСледующий вопрос остается открытым, как дождаться, чтобы все процессы завершились? Следующего кода явно не достаточно Код: plaintext 1. 2. 3. 4. Замени это на Код: plaintext 1. 2. 3. 4. Заметь: скопипастил из твоего первого поста PS учи матчасть (читай хэлпы), т.е. что конкретно делает каждая вызываемая тобой функция. Если будешь гадать как сейчас - ничего хорошего не выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 19:31 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38769276&tid=2019281]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 293ms |
| total: | 447ms |

| 0 / 0 |
