c++ - 关于_int64的一点疑问
问 题 在百度百科上关于_int64这种数据类型有这么一句话: 警告 在 32 位 Intel 计算机上分配 64 位值不是原子操作;即该操作不是线程安全的。这意味着,如果两个人同时将一个值分配给一个静态 Int64 字段,则该字段的最终值是无法预测的。 不是很理解这段话的意思。。。有什么通俗简单的解释么? 解决方案 就是32位计算机上,对_int64类型的变量赋值或取值,在CPU指令的层级,是两步操作,分别写或读内存的前32位和后32位。如果在这2个CPU指令之间,其他线程对这个变量进行读写,就会发生并发问题。 例如: 线程1先写了变量的前32位, 这时线程2写了变量的前32位和后32位, 接下来线程1写了变量的后32位。 最终结果,内存的前32位是线程2写的,后32位是线程1写的。最终内存中的数据是一个完全错误的数据。
236 2022-07-19
编程技术问答社区
c++ - 读取位置 0x00000000 时发生访问冲突
问 题 学习一段时间c后 用vs2015编写的小程序,代码如下: //14-9.c #include "stdafx.h" #include #include #include #include #include "14-9.h" int main() { int flight; char choice; struct plane seat[FLIGHTNUM][SEATS]; FILE *data; Process mode[5] = { show_empty_number,show_empty_list,show_alphabetical_list,add_assign,del_assign }; if (fopen_s(&data, "SeatsData.dat", "r") == 0) { for (int f
1316 2022-07-17
编程技术问答社区
Caffe+vs2015运行报错提示无法打开libboost_date_time-vc-140-mt-gd-1_59.lib?
问 题 运行环境为Cuda8.0+VS2015,安装了Nsight扩展,使用的caffe是微软官方移植版本,地址如下: http://https://github.com/Mic... 第一次编译的时候VS会自动下载所需扩展,扩展文件夹里有boost_date_time-vc120.159.0.0文件夹,里面有内容。 现在用VS2015运行caffe.cpp,报错无法打开文件“libboost_date_time-vc-140-mt-gd-1_59.lib”,应该怎么做? 解决方案 是VS的版本问题,换成VS2013就可以了。
7442 2022-07-17
编程技术问答社区