- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我需要设置回调,其唯一职责是更新与单独对象中已完成事件关联的状态,以便以后可以查询。但是,由于 API 的设计方式,我不能保证在事件完成时另一个对象仍将拥有,所以我需要存储一个指向该对象的指针,并且因为回调 API 是基于 C 的,我最终存储了一个指向智能指针的原始指针,这是我见过的最丑陋的一段代码*。
* 无论如何,在过去的几个小时里...
所以这就是我为实现这一目标而写的:
event.setCallback(CL_COMPLETE, [](cl_event event, cl_int, void* ptr) {
auto ptr_ptr = static_cast<std::weak_ptr<render_future::shared_state>*>(ptr);
if(auto shared_ptr = ptr_ptr->lock()) {
auto & shared_state = *shared_ptr;
std::lock_guard lock{ shared_state.mutex };
shared_state.event_state[event] = true;
}
delete ptr_ptr;
}, new std::weak_ptr<render_future::shared_state>(future.state));
new std::weak_ptr<render_future::shared_state>(future.state)
,对我来说这似乎是某种反模式:使用裸
new
和
delete
结合智能指针。
shared_state
的唯一方法。 lambda 内部的对象是将其指针传入;再一次,因为我不能保证它的生命周期没有过期,我需要以指向
weak_ptr
的指针的形式来获取它。以便在(且仅当)对象仍然存在时可以对其进行操作。
shared_state
进入这个回调在哪里
new
和 delete
电话? 最佳答案
在 lambda 中,通过简单地使用 unique_ptr 可以有明显的改进:
auto callback = [](cl_event event, cl_int, void* ptr) {
std::unique_ptr<std::weak_ptr<render_future::shared_state>> ptr_ptr{ static_cast<std::weak_ptr<render_future::shared_state>*>(ptr)};
if(auto shared_ptr = ptr_ptr->lock()) {
std::lock_guard lock{ shared_state->mutex };
shared_state->event_state[event] = true;
}
}
std::unique_ptr<>::release()
.
auto ptr = std::make_unique<std::weak_ptr<render_future::shared_state>>(future.state);
event.setCallback(CL_COMPLETE, callback, ptr.release());
关于c++ - 有没有一种意识形态的方法来避免使用 Naked New?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61648829/
在与我的同事的谈话中,他提到他不小心在生产中部署了一个“裸体 where 子句”。 什么是“裸 where 条款”? 最佳答案 裸 WHERE 子句将指代始终返回 true 的内容 WHERE 1 =
在我的应用程序中,我需要设置回调,其唯一职责是更新与单独对象中已完成事件关联的状态,以便以后可以查询。但是,由于 API 的设计方式,我不能保证在事件完成时另一个对象仍将拥有,所以我需要存储一个指向该
我正在考虑将为 Windows 编写的脚本引擎移植到 Linux;它适用于 Winamp 的可视化平台 AVS。我不确定目前是否有可能。据我所知,代码正在获取 C 函数 nseel_asm_atan
__declspec(naked) void printfive() { int i = 5; printf("%i\n", i); } 出于某种原因这段代码有效,但我不明白 i 存储在哪
参见 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-condi
当您搜索词 Apex Domains在 Google 搜索中,您获得的首页是 https://help.github.com/en/articles/about-supported-custom-do
我试图在给定一个嵌套列表的情况下获取每个元素的长度;我也想摆脱重复的长度。 例如,嵌套列表 [[1],[1,2],[4..5]] 应该给我 [1,2]。 我可以在交互中通过 nub ( map 长度
如何从 PowerShell 写入标准错误,或捕获以下错误: 错误消息显示为错误(真正写入标准错误,以便 TeamCity 和 Octopus 将其视为错误) 没有堆栈跟踪垃圾扰乱我美丽、简洁的错误消
不确定如何表达这个,但我的意思是有类似 My name isRadu 的东西而不是 My name isRadu .显然不是 h1 的最佳用法元素,但我认为可以原谅。那么,所有 HTML 都应该用适当
问题很简单。 我的代码是: __attribute__ ((naked)) void function(int arg1, int arg2, int arg3) { _asm("push {r
最近我在泛型的上下文中读到一个术语“裸类型约束”。它是做什么的意思?我们在哪里使用它? 最佳答案 顺便说一句,令我感到奇怪的是,这个有点淫秽的术语竟然出现在了 MSDN 文档中。我们当然不会在 C#
我正在尝试获取 __declspec(naked) 函数的原始字节,但是 memcpy 正在返回我不期望的字节。 我使用了调试器来检查字节/地址。一切看起来都很好,但 memcpy 的结果产生了不同的
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
乍一看,Naked Objects看起来非常有前途,因为它们允许快速创建具有基本 UI 的完整系统,然后进行完善。 有没有人有使用任何 .net Naked Objects 框架的实际经验? 我应该如
我有一个 Entity由 lib 和 Registry 定义的类这是管理使用 map 注册到它的实体的类。 我正在尝试做的事情: //Registry Signature void Registry:
我有 Naked 通知 FindBugs 警告。下面是我的代码。 synchronized (this) { this.notify(); } “this”是“public c
尝试一个简单的递归函数,它接受一个数字,以某种方式拆分它,并且只有在拆分后的数字彼此相等时才应该返回它。 package main import "fmt" func split(sum int) (
gcc/g++ 中 __declspec( naked ) 的等价物是什么? __declspec( naked ) 实际上是用来声明一个没有尾声和序言的函数。 最佳答案 在某些体系结构上,gcc 支
$ clang --version clang version 5.0.0 (tags/RELEASE_500/final) . CC ../../py/nlrthumb.c ../../py/nl
我正在 Microsoft Azure 上运行 Django 应用程序,需要将所有流量 301 重定向到单个安全 www 域,即 来自: http://example.com https://exam
我是一名优秀的程序员,十分优秀!