|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.10.2012, 13:21 | #1 |
Пользователь
Регистрация: 07.11.2009
Сообщений: 49
|
Мьтекс. Синхронизация 2-х потоков.
Всем привет. Кто пожалуйста может посмотреть правильно ли синхронизированы 2 потока?
Почему-то если закомментить в потоках строчки: Код:
Иногда бывает идут ровно, но раз через раз первый проскакивает быстрее, потом опять. Если их раскомментить, то ничего помоему не меняется результаты иногда отображаются немного в разнобой, 1-й поток меняется быстрее. Насколько я понимаю, в идеале меняться должны одновременно. В чем проблема? Спасибо. Последний раз редактировалось Sonny01; 16.10.2012 в 13:32. |
16.10.2012, 13:57 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Просто у вас мало данных, вот и не можете увидеть разницу когда потоки идут вперемежку и когда ожидают друг друга.
|
16.10.2012, 14:07 | #3 |
Пользователь
Регистрация: 07.11.2009
Сообщений: 49
|
А вообще с точки зрения синхронизации с помощью мьтекса они правильно работают? сделано правильно? Я немогу понять почему происходят такие проскоки, то всё выводится одновременно, и иногда бывает проскакивает 1-й поток а синус отстаёт на 1 шаг, потом выравниваются это может быть и в середине, может и в начале работы...
Последний раз редактировалось Sonny01; 16.10.2012 в 14:29. |
16.10.2012, 14:40 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Да, вроде все правильно, но я же не знаю цели... эти два потока по очереди добавляют свои данные в список. Если это то, что нужно, то значит все в порядке
|
16.10.2012, 14:51 | #5 |
Пользователь
Регистрация: 07.11.2009
Сообщений: 49
|
да это и есть цель 1 поток генерит 10 чисел в лискбокс1, 2-й поток считает синус этих 10 чисел и выводит в листбокс2. с этим проблем никаких. Но почему они работают иногда одинаково, а иногда (при этом никаких изменений в коде небыло) новые числа выводятся быстрее чем их синус! т.е. на каждой следующей генерации чисел выводится синус предидущей генерации. Причем иногда 2-й поток выводит сразу синус. А иногда все нули опять таки при одинаковом коде.
Последний раз редактировалось Sonny01; 16.10.2012 в 15:22. |
16.10.2012, 15:35 | #6 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Неа, не верно с точки зрения применения синхронизации. Synchronize(Do); - передаёт управление главному потоку (самой программе), и использование мьютексов в данном случае бессмысленно, т.к. они блокируют доступ для других потоков, но другие потоки и так остановлены, т.к. одновременное выполнение Synchronize невозможно.
|
16.10.2012, 16:02 | #7 |
Пользователь
Регистрация: 07.11.2009
Сообщений: 49
|
т.е. использования либо мьютекстов, либо крит. секции вообще бессмыслено и можно не использовать, когда используется синхронайз?
|
16.10.2012, 16:08 | #8 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Да, использовать надо что-то одно. В данном случае без синхронайза не обойтись, т.к. потоки с формой контактируют.
|
16.10.2012, 17:46 | #9 |
Пользователь
Регистрация: 07.11.2009
Сообщений: 49
|
А ещё один такой вопрос, изменится ли скорость выполнения потока с изменением его приоритета, и какой приоритет у потока по умолчанию при создании?
|
16.10.2012, 18:01 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
В теории да, на практике в этом редко есть смысл. Если у вас загрузка процесора не 100% то и не парьтесь.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Синхронизация потоков | добрый_фей | Помощь студентам | 5 | 09.12.2011 19:57 |
Синхронизация потоков | alenka_ej | Помощь студентам | 0 | 03.06.2010 22:20 |
Синхронизация потоков в С++ | erazer89 | Помощь студентам | 0 | 27.04.2010 20:14 |
синхронизация потоков | m_kostik | Win Api | 0 | 26.03.2010 23:56 |