- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
static char example(struct pt *pt)
{
switch(pt->lc) { case 0:
while(1)
{
pt->lc = 11; case 11: if(!(counter == 1000)) return 0;
printf("Threshold reached\n");
counter = 0;
}
} pt->lc = 0; return 2;
}
guest 12.01.2016 03:28 # +2
Я тоже где-то слышал, что оператор != не thread-safe
gost 12.01.2016 11:20 # +1
govnokod3r 12.01.2016 05:20 # +2
dxd 12.01.2016 05:38 # 0
govnokod3r 12.01.2016 05:48 # 0
dxd 12.01.2016 06:15 # +1
FlySnake 12.01.2016 07:27 # +1
dxd 12.01.2016 09:36 # +1
guest 12.01.2016 14:08 # 0
dxd 12.01.2016 14:45 # 0
gost 12.01.2016 19:41 # 0
bormand 12.01.2016 19:59 # 0
У меня printf для rs-232 вообще кастрированный был, строк 50 на сишке. Выводил только целые числа разного размера (только хексами, без паддингов и прочих свистоперделок) да строки. И этого хватало за глаза ;)
P.S. Сколько байт там было - х.з., не замерял. Но строки всяко весили больше, чем сам printf.
dxd 12.01.2016 20:07 # 0
bormand 12.01.2016 20:09 # 0
bormand 12.01.2016 17:49 # +1
TarasB 12.01.2016 11:41 # 0
и без говнодаффа никак?
Antervis 13.01.2016 07:57 # 0
3_dar 12.01.2016 19:57 # 0
Пытаясь понять этот код у меня stack overflow.
3_dar 12.01.2016 20:15 # 0
while(counter != 1000);
?
bormand 12.01.2016 20:22 # 0
3_dar 12.01.2016 21:12 # 0
while(counter==1000) {
printf("Threshold reached\n");
counter = 0;
}
bormand 12.01.2016 21:38 # +1
3_dar 12.01.2016 22:35 # 0
Ок, спрошу по другому.
Чем код выше с нераскрытыми макросами отличается от
while(counter==1000) {
...
}
?
bormand 12.01.2016 22:38 # 0
Твой код эту 1000 тиков счётчика будет тупо жрать проц, а код ОП'а займётся другими "тредами" или тупо поспит для экономии энергии.
TarasB 13.01.2016 12:58 # 0
bormand 13.01.2016 18:59 # 0
Посмотри внимательно на код. Он возвращает управление в вызывающую функцию, если counter != 1000. А при counter == 1000 он сбрасывает counter на 0 и тоже возвращает управление.
По сути, получается конечный автомат.
P.S. Я так понимаю, что обычные локальные переменные тут юзать нельзя. Только глобалки и, возможно, какую-то приватную структуру, доступную через pt.
bormand 13.01.2016 19:05 # 0
P.P.S. Да, чтобы всё это нормально работало, надо мутить полноценные wait-notify, а не говно со счётчиком. Кстати, вполне возможно, что они там есть.
bormand 13.01.2016 19:08 # 0
3_14dar 13.01.2016 20:45 # 0
bormand 13.01.2016 20:52 # 0
Откуда-то оттуда, наверное ;)
inkanus-gray 12.01.2016 22:42 # 0
Хорошо, что в Паскале так нельзя.
bormand 12.01.2016 22:44 # 0
govnokod3r 13.01.2016 13:05 # 0
kegdan 13.01.2016 06:22 # 0
wvxvw 13.01.2016 09:19 # 0
roman-kashitsyn 13.01.2016 10:17 # 0
Не, это не то. В коде топика switch прыгает сразу внутрь цикла.
А select в го няшный - с ним можно отмену асинхронных операций тривиально реализовать. Или спекулятивный параллелизм. Я всё жду, пока аналоги в кресты завезут.
bormand 13.01.2016 07:27 # 0
kegdan 13.01.2016 07:41 # 0
govnokod3r 13.01.2016 12:53 # 0