在尝试使用带有原子的内存顺序标签的教科书示例时,我意识到即使使用function onSubmit(e) {
//get entry id
var entryId = e.response.getId();
//get form ID
var formId = e.source.getId();
var soloResponse = "https://docs.google.com/forms/d/" + formId + "/viewform?edit2=" + entryId;
//build email from form data
var email = "test";
var subject = "test";
var body = soloResponse;
//send email
GmailApp.sendEmail(email, subject, body);
}
,下面的示例也会像使用更强的内存顺序标签一样工作。在谷歌搜索我发现它,因为x86已经保证了一个相对强烈有序的内存模型。我的问题是当在x86上编写基于原子的并发代码时,我怎么知道我写的代码是否“安全”,即使我搞砸了内存顺序标签它仍能正常工作?
by“safe”我的意思是在没有x86自动强记忆排序的情况下按预期工作。
std::memory_order_relaxed
在x86上,断言永远不会触发,上面的代码就好像存储到y和y的加载使用了释放/获取语义。