S
Size: a a a
OS
AS
OS
S
S
char buf[1000000000];
char * volatile begin = buf, * volatile end = buf;
void Write(char ch) {
*end = ch;
++end;
}
char Read() {
while (begin == end)
sleep(1);
char r = *begin;
++begin;
return r;
}
m
char buf[1000000000];
char * volatile begin = buf, * volatile end = buf;
void Write(char ch) {
*end = ch;
++end;
}
char Read() {
while (begin == end)
sleep(1);
char r = *begin;
++begin;
return r;
}
m
char buf[1000000000];
char * volatile begin = buf, * volatile end = buf;
void Write(char ch) {
*end = ch;
++end;
}
char Read() {
while (begin == end)
sleep(1);
char r = *begin;
++begin;
return r;
}
++ms_specific_volatile
на атомики транслируется как-то так:auto t = volatile.load(std::memory_order::memory_order_acquire);В общем хорошо, что у нас теперь есть нормальные атомики.
++t;
volatile.store(t, std::memory_order::memory_order_release);
return t;
AS
char buf[1000000000];
char * volatile begin = buf, * volatile end = buf;
void Write(char ch) {
*end = ch;
++end;
}
char Read() {
while (begin == end)
sleep(1);
char r = *begin;
++begin;
return r;
}