- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
#include <iostream>
#include <vector>
#include <thread>
int f()
{
static int i = 0;
synchronized { // begin synchronized block
std::cout << i << " -> ";
++i; // each call to f() obtains a unique value of i
std::cout << i << '\n';
return i; // end synchronized block
}
}
int main()
{
std::vector<std::thread> v(10);
for(auto& t: v)
t = std::thread([]{ for(int n = 0; n < 10; ++n) f(); });
for(auto& t: v)
t.join();
}
0 -> 1
1 -> 2
2 -> 3
...
99 -> 100
https://en.cppreference.com/w/cpp/language/transactional_memory
Ну, синтактический сахар.
Почему б крестоговностандартизатором не использовать говнонеймспейс для такого говна, ну типа чтобы было std::special_shit::synchronized {какая-то там хуйня} ?
Хуй там. Будут называть "aaaa". Или "a1", "a2", "a3" ... или с какими-то говноподчеркиваниями
А тут компилятор подползает сзади и напоминает, что в некоторых случаях подчёркивания в именах — UB, а при UB может и жёсткий диск отформатироваться.
А потом прочитал внимательнее.
> ключевые слова a, b, c, ... , i,
И как теперь счётчики писать, когда не будет идиоматичного i++?
AbstractCounterFactory
Двадцать лет назад они добавили бы `[@]` или `(=:)=`
Даже без гомоговна, чтобы импортились разные ключевые слова из разных мудулей и стандартов.
А то кресты какие-то скучноватые. И поехали.
> У вас не получиться парсить синтаксис любого языка регэкспами.
безвузные питухи традиционно не могут в свободные грамматики, еерархию хорьски и лексеры/парсеры
<ваш код>
})}), nullptr); sync1.exec(std::threading::get_current_t hread());