atomic boolean usage/implementation in C++98
Multi tool use
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have been looking everywhere for a solid answer and even found someone attempting to write their own implementation. But does anyone know of something similar to the std::atomic<bool>
for C++98? I just need true/false
values.
No flame wars or asking me to upgrade please. The boards we are using are forcing us to use C++98.
c++ atomic c++98
|
show 2 more comments
I have been looking everywhere for a solid answer and even found someone attempting to write their own implementation. But does anyone know of something similar to the std::atomic<bool>
for C++98? I just need true/false
values.
No flame wars or asking me to upgrade please. The boards we are using are forcing us to use C++98.
c++ atomic c++98
1
Which platform/compiler ? intrinsic might exist...
– Jarod42
Nov 15 '18 at 17:22
Do you need it to be portable? Have you checked boost?
– NathanOliver
Nov 15 '18 at 17:23
At worst, a non lock-free atomic might be implemented with mutex...
– Jarod42
Nov 15 '18 at 17:23
2
You simply can't do it in a pure C/C++. Earlier standards simply had no notion of multithreading, it's not in their memory model. If it's the boards you are using - find out if the boards themselves have any kind of support lib. Maybe there is already atomic available. If not, check if HW support atomic operations. Maybe you'll have to resort to inline asm, but it's not hard. Especially for a simple limited case.
– Dan M.
Nov 15 '18 at 17:26
2
On X86,volatile
is sometimes used in C++98 code to support atomic loads and stores (with relaxed memory ordering) for types that are atomic on CPU level (bool
usually is). You cannot perform atomic RMW's on avolatile bool
with standard C++98
– LWimsey
Nov 15 '18 at 19:27
|
show 2 more comments
I have been looking everywhere for a solid answer and even found someone attempting to write their own implementation. But does anyone know of something similar to the std::atomic<bool>
for C++98? I just need true/false
values.
No flame wars or asking me to upgrade please. The boards we are using are forcing us to use C++98.
c++ atomic c++98
I have been looking everywhere for a solid answer and even found someone attempting to write their own implementation. But does anyone know of something similar to the std::atomic<bool>
for C++98? I just need true/false
values.
No flame wars or asking me to upgrade please. The boards we are using are forcing us to use C++98.
c++ atomic c++98
c++ atomic c++98
asked Nov 15 '18 at 17:20
jiveturkeyjiveturkey
1,4821128
1,4821128
1
Which platform/compiler ? intrinsic might exist...
– Jarod42
Nov 15 '18 at 17:22
Do you need it to be portable? Have you checked boost?
– NathanOliver
Nov 15 '18 at 17:23
At worst, a non lock-free atomic might be implemented with mutex...
– Jarod42
Nov 15 '18 at 17:23
2
You simply can't do it in a pure C/C++. Earlier standards simply had no notion of multithreading, it's not in their memory model. If it's the boards you are using - find out if the boards themselves have any kind of support lib. Maybe there is already atomic available. If not, check if HW support atomic operations. Maybe you'll have to resort to inline asm, but it's not hard. Especially for a simple limited case.
– Dan M.
Nov 15 '18 at 17:26
2
On X86,volatile
is sometimes used in C++98 code to support atomic loads and stores (with relaxed memory ordering) for types that are atomic on CPU level (bool
usually is). You cannot perform atomic RMW's on avolatile bool
with standard C++98
– LWimsey
Nov 15 '18 at 19:27
|
show 2 more comments
1
Which platform/compiler ? intrinsic might exist...
– Jarod42
Nov 15 '18 at 17:22
Do you need it to be portable? Have you checked boost?
– NathanOliver
Nov 15 '18 at 17:23
At worst, a non lock-free atomic might be implemented with mutex...
– Jarod42
Nov 15 '18 at 17:23
2
You simply can't do it in a pure C/C++. Earlier standards simply had no notion of multithreading, it's not in their memory model. If it's the boards you are using - find out if the boards themselves have any kind of support lib. Maybe there is already atomic available. If not, check if HW support atomic operations. Maybe you'll have to resort to inline asm, but it's not hard. Especially for a simple limited case.
– Dan M.
Nov 15 '18 at 17:26
2
On X86,volatile
is sometimes used in C++98 code to support atomic loads and stores (with relaxed memory ordering) for types that are atomic on CPU level (bool
usually is). You cannot perform atomic RMW's on avolatile bool
with standard C++98
– LWimsey
Nov 15 '18 at 19:27
1
1
Which platform/compiler ? intrinsic might exist...
– Jarod42
Nov 15 '18 at 17:22
Which platform/compiler ? intrinsic might exist...
– Jarod42
Nov 15 '18 at 17:22
Do you need it to be portable? Have you checked boost?
– NathanOliver
Nov 15 '18 at 17:23
Do you need it to be portable? Have you checked boost?
– NathanOliver
Nov 15 '18 at 17:23
At worst, a non lock-free atomic might be implemented with mutex...
– Jarod42
Nov 15 '18 at 17:23
At worst, a non lock-free atomic might be implemented with mutex...
– Jarod42
Nov 15 '18 at 17:23
2
2
You simply can't do it in a pure C/C++. Earlier standards simply had no notion of multithreading, it's not in their memory model. If it's the boards you are using - find out if the boards themselves have any kind of support lib. Maybe there is already atomic available. If not, check if HW support atomic operations. Maybe you'll have to resort to inline asm, but it's not hard. Especially for a simple limited case.
– Dan M.
Nov 15 '18 at 17:26
You simply can't do it in a pure C/C++. Earlier standards simply had no notion of multithreading, it's not in their memory model. If it's the boards you are using - find out if the boards themselves have any kind of support lib. Maybe there is already atomic available. If not, check if HW support atomic operations. Maybe you'll have to resort to inline asm, but it's not hard. Especially for a simple limited case.
– Dan M.
Nov 15 '18 at 17:26
2
2
On X86,
volatile
is sometimes used in C++98 code to support atomic loads and stores (with relaxed memory ordering) for types that are atomic on CPU level (bool
usually is). You cannot perform atomic RMW's on a volatile bool
with standard C++98– LWimsey
Nov 15 '18 at 19:27
On X86,
volatile
is sometimes used in C++98 code to support atomic loads and stores (with relaxed memory ordering) for types that are atomic on CPU level (bool
usually is). You cannot perform atomic RMW's on a volatile bool
with standard C++98– LWimsey
Nov 15 '18 at 19:27
|
show 2 more comments
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53324812%2fatomic-boolean-usage-implementation-in-c98%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53324812%2fatomic-boolean-usage-implementation-in-c98%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
kuN0AWd,Oo3OHOJWmVytSqa96596OC9q6c7XHVa,D j2cBoGlQ NLj
1
Which platform/compiler ? intrinsic might exist...
– Jarod42
Nov 15 '18 at 17:22
Do you need it to be portable? Have you checked boost?
– NathanOliver
Nov 15 '18 at 17:23
At worst, a non lock-free atomic might be implemented with mutex...
– Jarod42
Nov 15 '18 at 17:23
2
You simply can't do it in a pure C/C++. Earlier standards simply had no notion of multithreading, it's not in their memory model. If it's the boards you are using - find out if the boards themselves have any kind of support lib. Maybe there is already atomic available. If not, check if HW support atomic operations. Maybe you'll have to resort to inline asm, but it's not hard. Especially for a simple limited case.
– Dan M.
Nov 15 '18 at 17:26
2
On X86,
volatile
is sometimes used in C++98 code to support atomic loads and stores (with relaxed memory ordering) for types that are atomic on CPU level (bool
usually is). You cannot perform atomic RMW's on avolatile bool
with standard C++98– LWimsey
Nov 15 '18 at 19:27