Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 10.12.2014
Сообщений: 36
1

Странное поведение очереди

18.01.2016, 18:18. Показов 525. Ответов 0

Author24 — интернет-сервис помощи студентам
Столкнулся с проблемой:
1.в очередь потоком добавляется одна запись,стоят mutex, что бы избедать одновременного доступа из нескольких потоков (и я это логирую);
2. другой поток достаёт это значение по нескольку раз из очереди(везде стоят мутексы) (я это логирую).
Я приведу кусочку кода добавления и кусочки считывания и кусок лога который у меня выходит, но и без них как-то понятно...
Это процесс считывания, данная функия у меня из main вызывается через пул потоков ThreadPool.QueueUserWorkItem(SentToBDFromQueue);
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static void SentToBDFromQueue(object state) //функция для отправки сообщений из очереди в потоке №2
        {
            
            while(true)
            {
                
                int count = mesqe_array.Count;
                for (int i = 1; i <= count; i++)
                {
                    mtx.WaitOne();
                    string[] messageINarray = mesqe_array.Dequeue();
                    dataOut.Write(messageINarray[0] + " " + messageINarray[1] + " " + messageINarray[2] + " " + messageINarray[3] + " " + messageINarray[4] + " - из очереди на отправку\n");
                    mtx.ReleaseMutex();
                    RiakActiv(2, messageINarray[0], messageINarray[1], messageINarray[2], messageINarray[3], Convert.ToInt32(messageINarray[4]));
                }
                
            }
            
        }
Процесс добавления нет смысла приводить, логирование показывает что добавление в очередь конкретной записи происходит только один раз.
Собственно кусочек лога:
"- из перебора" - это значит я перебрал определенный массив данных и добавил сообщение в очередь.
XML
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
_18.01.2016 17:57:20.585 termometr 16 status:OFF 00 - из очереди на отправку
]18.01.2016 17:57:20.585 termometr 17 status:ON 1 - из очереди на отправку
_18.01.2016 17:57:20.585 termometr 18 status:OFF 00 - из очереди на отправку
_18.01.2016 17:57:20.585 termometr 19 status:OFF 00 - из очереди на отправку
Z18.01.2016 17:57:21.573 lock 21 status:OFF 00 - из очереди на отправку
X18.01.2016 17:57:21.579 lock 22 status:ON 1 - из очереди на отправку
P18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1- из перебора
M18.01.2016 17:57:31.770 G 4 1 29- из очереди градусников
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
e18.01.2016 17:57:31.835 termometr 11 temperature:26,67 1 - из очереди на отправку
P18.01.2016 17:57:31.936 termometr 12 temperature:27,33 1- из перебора
M18.01.2016 17:57:31.871 G 5 1 24- из очереди градусников
e18.01.2016 17:57:31.936 termometr 12 temperature:27,33 1 - из очереди на отправку
e18.01.2016 17:57:31.936 termometr 12 temperature:27,33 1 - из очереди на отправку
e18.01.2016 17:57:31.936 termometr 12 temperature:27,33 1 - из очереди на отправку
e18.01.2016 17:57:31.936 termometr 12 temperature:27,33 1 - из очереди на отправку
e18.01.2016 17:57:31.936 termometr 12 temperature:27,33 1 - из очереди на отправку
e18.01.2016 17:57:31.936 termometr 12 temperature:27,33 1 - из очереди на отправку
e18.01.2016 17:57:31.936 termometr 12 temperature:27,33 1 - из очереди на отправку
M18.01.2016 17:57:31.972 G 7 1 27- из очереди градусников
P18.01.2016 17:57:32.138 termometr 15 temperature:24,67 1- из перебора
e18.01.2016 17:57:32.138 termometr 15 temperature:24,67 1 - из очереди на отправку
L18.01.2016 17:57:32.73 G 9 1 29- из очереди градусников
P18.01.2016 17:57:32.239 termometr 17 temperature:23,33 1- из перебора
e18.01.2016 17:57:32.239 termometr 17 temperature:23,33 1 - из очереди на отправку
N18.01.2016 17:57:32.174 G 10 1 24- из очереди градусников
N18.01.2016 17:57:32.275 G 11 1 24- из очереди градусников
P18.01.2016 17:57:32.370 termometr 14 temperature:26,33 1- из перебора
e18.01.2016 17:57:32.370 termometr 14 temperature:26,33 1 - из очереди на отправку
N18.01.2016 17:57:32.376 G 12 1 29- из очереди градусников
N18.01.2016 17:57:32.477 G 14 1 23- из очереди градусников
N18.01.2016 17:57:32.578 G 15 1 25- из очереди градусников
N18.01.2016 17:57:32.679 G 17 1 24- из очереди градусников
O18.01.2016 17:57:33.345 termometr 7 temperature:26,00 1- из перебора
d18.01.2016 17:57:33.345 termometr 7 temperature:26,00 1 - из очереди на отправку
M18.01.2016 17:57:33.280 G 0 1 29- из очереди градусников
А потом, секунд через 15 после старта начинает работать в нормальном режиме, лог подтверждает, строки 34-35; 37-38...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2016, 18:18
Ответы с готовыми решениями:

Странное поведение VS
Все работает, однако при открытии дизайна формы пишет: Object reference not set to an instance...

Странное поведение массива
Есть класс-наследник. Определено поле и метод. Не смотря на то что в поле записываются данные...

Странное поведение переиспользуемого StreamReader
Есть такой код: var myStream = new StreamReader(&quot;file.txt&quot;);...

Странное поведение Thread.Sleep
Забавно, уже не первый раз встречаю такую вещь: делаю движение контрола по форме в цикле...

0
18.01.2016, 18:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2016, 18:18
Помогаю со студенческими работами здесь

Странное поведение double при сложении
Добрый вечер. Столкнулся с шокирующей для себя новостью. Я не умею считать!!! Есть форма из 2х...

Странное поведение проверки условия цикла
Пишу алгоритм сортировки замещением. Дали задание написать алгоритм не только для возрастающего...

Странное поведение при добавлении dll
Доброго времени суток. Столкнулся со странной вещью и понимаю, что что-о делаю не так. В проект...

Странное поведение сложения чисел double
Добрый день. Столкнулся с такой проблемой. Если последовательно прибавлять к переменной типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru