草庐IT

libgnuSTL_shared

全部标签

c++ - 为什么 std::shared_ptr 使用原子 cpu 操作

我无法理解为什么shared_ptr使用原子cpu指令...我无法找出原因,因为它不是线程安全的。有人可以解释一下吗。如果你想知道我是怎么知道它使用原子结构的:有一段来自C++的剪辑以及Herb和Andrei谈论它的地方,但他们从未提及为什么会这样。 最佳答案 shared_ptr的任何实例都是多线程安全的。它指向的数据不是多线程安全的。参见this.如果正确应用原子指令(通过竞争线程访问以相同顺序完成保护)是实现线程安全的一种方法。另一种方法是使用互斥体。查看BOOST的类似问题:Isboostshared_ptrxxxthrea

c++ - make_shared是否为每个成员变量做一个默认的初始化(零初始化)

将普通结构(或类)与普通旧数据类型和对象作为成员。请注意,没有定义默认构造函数。structFoo{intx;inty;doublez;stringstr;};现在,如果我在堆栈上声明一个实例f并尝试打印其内容:{Foof;std::cout结果是为x、y和z打印的垃圾数据。并且该字符串默认初始化为空。符合预期。如果我创建一个shared_ptr的实例使用make_shared并打印:{shared_ptrspFoo=make_shared();coutxyzstr那么,x、y、z都是0.这使得shared_ptr看起来在构造对象实例后对每个成员执行默认初始化(零初始化)。至少这是我在

c++ - shared_ptr 现实生活中的用例

shared_ptr将在我们希望拥有一个动态分配项目的多个所有者的情况下使用。问题是,我无法想象我们需要多个所有者的任何场景。我能想到的每个用例都可以用unique_ptr解决。有人可以提供一个现实生活中的用例示例,其中包含需要shared_ptr的代码(这里需要,我的意思是作为智能指针的最佳选择)?我所说的“现实生活”是指一些实用的用例,而不是过于抽象和虚构的东西。 最佳答案 在我们的模拟器产品中,我们使用一个框架在模拟组件(称为端点)之间传递消息。这些端点可以驻留在进程内的多个线程上,甚至可以驻留在模拟集群中的多台机器上,消息通

windows - 警告 : templates not found/share/git-core/templates | fatal: Unable to find remote helper for 'https'

我在尝试克隆github存储库时收到以下消息:gitclonehttps://github.com/twbs/bootstrap.gitCloninginto'test'...warning:templatesnotfound/share/git-core/templatesfatal:Unabletofindremotehelperfor'https'Windows8.1git版本1.8.5.2.msysgit.0在我的路径中:C:\ProgramFiles\Git\cmd;C:\ProgramFiles\Git\binhttp://windows.github.com/也安装在我的

windows - 在 Windows 中使用 git,git-init 的 --shared 选项有什么用吗?

我注意到,当在Windows上使用Git扩展来初始化它所做的裸存储库时gitinit--bare--shared=all我已经阅读了--shared选项的手册。设置文件夹权限似乎很方便,但描述非常UNIX-y(例如umask)。我的远程存储库将共享,但它们在Windows身份验证下的远程UNC共享上。那么,在我的情况下,是否需要这个--shared选项,例如,如果我从命令提示符初始化一个repo? 最佳答案 除了权限(在Windows中确实可能不起作用),使用--shared标志还设置了receive.denyNonFastForw

windows - CreateFile 如何以 FILE_SHARE_READ 失败并以 FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE 成功?

自己试试:创建一个XLS文件,在Excel中打开它。打开sysinternalsProcessMonitor,观察在资源管理器中复制XLS文件时发生的情况(只需按ctrl-cctrl-v)。连续两次调用::CreateProcess。第一次调用要求读取权限,并被拒绝访问。第二次调用要求读加写加删除并通过。这正常吗? 最佳答案 如果您使用FILE_SHARE_READ打开一个文件,您表示您愿意共享对该文件的访问权限,但仅限于读取。如果您使用所有标志打开,您也愿意共享写入/删除访问权限。FILE_SHARE_READ比FILE_SHAR

c++ - 如何在 Vista/Server 2008 上使用 std::shared_mutex?

这是TryAcquireSRWLock*and_WIN32_WINNT的后续问题WindowsSDK8.1和更新版本(至少是当前的10.0.16299.0)中似乎存在错误,使得方法TryAcquireSRWLockShared和TryAcquireSRWLockExclusive可用于针对WindowsVista或WindowsServer2008的编译。这会导致包含对这些方法的调用的应用程序无法在WindowsVista或WindowsServer2008上执行,因为它们最终只能从Windows7或WindowsServer2008R2开始使用。似乎执行std::shared_mut

windows - False 'Sharing Violation' Xcopy 错误信息

我正在运行批处理脚本(在计算机A上)。该脚本将多个文件从另一台计算机(计算机B)复制到计算机A。运行批处理脚本时,它报告由于“共享冲突”无法将计算机B中的某些文件复制到其自己的目录。通过阅读其他stackoverflow页面,我看到当另一个程序锁定文件时会发生这种情况(另一个程序当前正在使用/访问该文件)。但是,我可以进入计算机B并删除计算机A声称已锁定的文件(由于共享违规)。我唯一能想到的可能发生的事情是计算机A上的批处理脚本在较早的命令期间(以某种方式)锁定了文件,而这个较早的命令是什么锁定了文件?但我虽然批处理脚本命令串行运行,除非另有说明。有没有人遇到过这个问题?大约一两周前,

php - Magento 可配置产品运行缓慢,strace 显示对/usr/share/zoneinfo 的数千次统计调用

在创建一个包含大约120个相关产品的可配置产品后,产品页面的加载速度非常慢,Apache2工作进程的CPU使用率飙升至100%。在回滚代码几次以确保这不是我们的开发团队推出的新内容后,我决定仔细查看strace并且有点震惊地发现输出文件中有数千block包含以下(查询字符串发生变化,但stat始终相同)12:50:28.374278write(23,"\202\0\0\0\3SELECT`main_table`.*FROM"...,134)=13412:50:28.374316read(23,"\1\0\0\1\23>\0\0\2\3def\7magento\nmain_table".

ios - 适用于 IOS 的 vimeo iframe 如何从 UIWebView 的右侧隐藏 "like"和 "share"按钮

我正在使用UIWebview通过此代码播放vimeo视频让embedHTML="http://player.vimeo.com/video/"+(str)!+"?title=0&byline=0&portrait=0&color=008efe&\";controls=0&fullscreen=1&buttons.share=flase&embed.buttons.like=false;autoplay=1&loop=1width=\"375\"height=\"370\"frameborder=\"0\">"我需要隐藏“分享”和“喜欢”按钮 最佳答案