Do I need to protect access to a Boost MultiIndex's index (the index itself) by a lock?

Multi tool use
Assuming I have a boost::multi_index_container and want to access an index of it
boost::multi_index_container< ... > bmi;
// lock here?
auto &index = boost::multi_index::get<0>(bmi); // <-- does this call need to be protected by a lock?
// or is it sufficient to lock here?
// access the index (need to have the lock here)
When multiple processes / threads access a multi_indesx_container, I need to use mutexes (or something of the sort). But do I need to protect getting the index itself, too?
I guess not, but could not find a guarantee in the docs.
c++ boost locking multi-index
add a comment |
Assuming I have a boost::multi_index_container and want to access an index of it
boost::multi_index_container< ... > bmi;
// lock here?
auto &index = boost::multi_index::get<0>(bmi); // <-- does this call need to be protected by a lock?
// or is it sufficient to lock here?
// access the index (need to have the lock here)
When multiple processes / threads access a multi_indesx_container, I need to use mutexes (or something of the sort). But do I need to protect getting the index itself, too?
I guess not, but could not find a guarantee in the docs.
c++ boost locking multi-index
Are you adding or removing items in any of your threads?
– drescherjm
Dec 30 '18 at 23:40
sure, other threads will modifiy the index. (but getting the index itself... will the get() call return different objects if the multi_index gets modified?)
– C. Duelli
Dec 30 '18 at 23:41
add a comment |
Assuming I have a boost::multi_index_container and want to access an index of it
boost::multi_index_container< ... > bmi;
// lock here?
auto &index = boost::multi_index::get<0>(bmi); // <-- does this call need to be protected by a lock?
// or is it sufficient to lock here?
// access the index (need to have the lock here)
When multiple processes / threads access a multi_indesx_container, I need to use mutexes (or something of the sort). But do I need to protect getting the index itself, too?
I guess not, but could not find a guarantee in the docs.
c++ boost locking multi-index
Assuming I have a boost::multi_index_container and want to access an index of it
boost::multi_index_container< ... > bmi;
// lock here?
auto &index = boost::multi_index::get<0>(bmi); // <-- does this call need to be protected by a lock?
// or is it sufficient to lock here?
// access the index (need to have the lock here)
When multiple processes / threads access a multi_indesx_container, I need to use mutexes (or something of the sort). But do I need to protect getting the index itself, too?
I guess not, but could not find a guarantee in the docs.
c++ boost locking multi-index
c++ boost locking multi-index
edited Dec 30 '18 at 23:51
C. Duelli
asked Dec 30 '18 at 23:32
C. DuelliC. Duelli
236
236
Are you adding or removing items in any of your threads?
– drescherjm
Dec 30 '18 at 23:40
sure, other threads will modifiy the index. (but getting the index itself... will the get() call return different objects if the multi_index gets modified?)
– C. Duelli
Dec 30 '18 at 23:41
add a comment |
Are you adding or removing items in any of your threads?
– drescherjm
Dec 30 '18 at 23:40
sure, other threads will modifiy the index. (but getting the index itself... will the get() call return different objects if the multi_index gets modified?)
– C. Duelli
Dec 30 '18 at 23:41
Are you adding or removing items in any of your threads?
– drescherjm
Dec 30 '18 at 23:40
Are you adding or removing items in any of your threads?
– drescherjm
Dec 30 '18 at 23:40
sure, other threads will modifiy the index. (but getting the index itself... will the get() call return different objects if the multi_index gets modified?)
– C. Duelli
Dec 30 '18 at 23:41
sure, other threads will modifiy the index. (but getting the index itself... will the get() call return different objects if the multi_index gets modified?)
– C. Duelli
Dec 30 '18 at 23:41
add a comment |
1 Answer
1
active
oldest
votes
Although it is not documented anywhere, get()
is a static cast operation, which is intrinsically thread-safe.
add a comment |
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%2f53982289%2fdo-i-need-to-protect-access-to-a-boost-multiindexs-index-the-index-itself-by%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Although it is not documented anywhere, get()
is a static cast operation, which is intrinsically thread-safe.
add a comment |
Although it is not documented anywhere, get()
is a static cast operation, which is intrinsically thread-safe.
add a comment |
Although it is not documented anywhere, get()
is a static cast operation, which is intrinsically thread-safe.
Although it is not documented anywhere, get()
is a static cast operation, which is intrinsically thread-safe.
edited Dec 31 '18 at 11:40
answered Dec 31 '18 at 9:12


Joaquín M López MuñozJoaquín M López Muñoz
3,86811118
3,86811118
add a comment |
add a comment |
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%2f53982289%2fdo-i-need-to-protect-access-to-a-boost-multiindexs-index-the-index-itself-by%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
6pvckt2j TT,99IYV1kkw
Are you adding or removing items in any of your threads?
– drescherjm
Dec 30 '18 at 23:40
sure, other threads will modifiy the index. (but getting the index itself... will the get() call return different objects if the multi_index gets modified?)
– C. Duelli
Dec 30 '18 at 23:41