草庐IT

critical-section

全部标签

c++ - 玛雅编程 : Separating attributes into sections in the attribute editor

抱歉这么具体的应用程序,但我注意到另一篇关于Maya开发的回答很好的帖子。我刚刚为Maya编写了一个插件节点。它只是根据湍流函数杀死一堆粒子。湍流由许多可在属性编辑器中调整的属性驱动。在属性编辑器中,还有一些其他属性称为“缓存”和“节点状态”,它们位于湍流属性之前。这对用户来说看起来不太漂亮。我希望能够做的是在GUI中放置分隔线以将它们分开。如果您查看属性编辑器中的大多数其他Maya节点,它们就是这样做的。它们在面板上有水平可折叠栏,将不相关的属性彼此分开。我的简单问题是,如何告诉Maya创建这些可折叠条来拆分属性?感谢您提供的任何帮助。安迪 最佳答案

c++ - 嵌套并行级别的 omp critical 行为

考虑以下场景:函数A创建一层OMP并行区域,每个OMP线程调用函数B,函数B本身包含另一层OMP并行区域。然后,如果在函数B的并行区域内,存在一个OMP临界区域,那么,该区域对于函数A和B创建的所有线程来说是“全局”临界的,还是仅对函数B是局部的?如果B是预构建函数(例如静态或动态链接库)怎么办? 最佳答案 OpenMP中的关键区域具有全局绑定(bind),它们的范围扩展到所有出现的具有相同名称的关键构造(在这方面,所有未命名的构造共享相同的特殊内部名称),无论它们出现在代码中的何处。您可以在OpenMPspecification的

c++ - 使用相同的临界区对象读写

我需要编写一个类来读取和写入文件。当我进行写操作时,不应进行读取,反之亦然。我可以为此使用单个关键部分对象吗?像这样:FileWorker.hclassFileWorker{public:FileWorker();voidWriteIntoFile(constchar*fileName,constchar*stringToWrite);voidReadFromFile(constchar*fileName,char*stringToRead,int*stringLength);~FileWorker();};FileWorker.cpp#include#include"FileWork

c++ - 警告 : section "__textcoal_nt" is deprecate since updating to Mac OSX Sierra

这个问题在这里已经有了答案:Disableassemblerwarning".section__TEXT,__textcoal_nt,coalesced,pure_instructions"(3个答案)关闭6年前。更新到Sierra后,我将我的Xcode从7.2.1更新到Xcode8。所以问题可能只是通过更新Xcode发生的。我降级回7.2.1,但仍然遇到同样的问题。这是我在编译C++程序时遇到的错误/var/folders/cj/1h3_84h56c9bgzt_ryhpf4940000gn/T//ccgjxtCM.s:4:11:warning:section"__textcoal_n

C++:并发和析构函数

假设您有一个可以被多个线程访问的对象。临界区用于保护敏感区域。但是析构函数呢?即使我一进入析构函数就进入临界区,一旦调用了析构函数,对象就已经失效了吗?我的思路:假设我进入析构函数,我必须在临界区等待,因为其他线程仍在使用它。一旦他完成,我就可以完成销毁该对象。这有意义吗? 最佳答案 一般来说,你不应该销毁一个对象,直到你知道没有其他线程正在使用它。期间。根据您的“思路”考虑这种情况:线程A:获取对象X引用线程A:锁定对象X线程B:获取对象X引用线程B:在对象X锁上阻塞线程A:解锁对象X线程B:锁定对象X;解锁对象X;销毁对象X现在

c++ - 有 C++11 临界区吗?

我试图找到C++11的关键部分的等价物,是newC++11mutexconcept进程绑定(bind)(例如,只在用户空间强制执行互斥锁)?也许它是特定于实现的,因为我找不到任何特定的东西。也许C++11有自己的临界区类,因为互斥量是跨进程的,对吧?请帮忙。 最佳答案 标准库实现可以自由使用它喜欢的任何满足标准中规定的要求和行为的互斥锁实现。提供跨进程锁定的实现(标准不需要)的性能可能低于不提供的实现。因此,高质量的实现很可能会提供进程本地互斥锁(mutices?)。因此,尽管可以使用命名信号量等方式制定出符合C++11互斥量的一致

c++ - 互锁变量访问和临界区互锁增量之间的区别

有人可以帮助解释C++中的互锁变量访问和临界区互锁增量之间的区别吗?谢谢,非常感谢,提前。 最佳答案 基本上,所有这些InterlockedXXX函数或多或少都是映射到相对较少(通常是一条)汇编指令的内部函数。这样的操作不能被中断,因此被称为原子性的(原子性是在CPU级别实现的,至少如果这在目标平台上是可能的)。CRITICAL_SECTION是一种可以保护较长部分的同步原语。它确实会锁定并且竞争线程将被迫等待,直到线程释放临界区的所有权。关键部分是操作系统原语,但它们仅限于单个进程。他们在Windows下临界区的老大哥是一个Mut

c++ - GCC --gc-sections 和寻找符号依赖

我正在尝试减小我的elf可执行文件的大小。我正在使用-ffunction-sections-fdata-sections进行编译并使用-gc-sections进行链接,但它出现了一些符号我相信未使用的不会被丢弃。我可以运行GNU工具链中的一些命令来查明正在使用哪些符号以及在何处使用?工具链:GNUarm-none-eabi平台:Cortex-M4语言:C++这是我的典型构建标志:编译:arm-none-eabi-g++.exe-Wall-O3-mthumb-std=c++11-mcpu=cortex-m4-mfpu=fpv4-sp-d16-mfloat-abi=softfp-fsing

c++ - 当互斥锁/解锁深埋在函数调用中时,我是否需要栅栏或屏障或其他东西?

我最近了解到,编译器将通过重新排列指令来优化您的代码,并且这可以通过使用屏障来控制。IIRC,锁定互斥量构成屏障,解锁互斥量也构成屏障,以防止临界区内的代码泄露。因此pthread_mutex_lock和pthread_mutex_unlock必须隐含地成为这些“障碍”。如果我有这样一个包装互斥体的类怎么办?classIMutex{public:virtualvoidlock()=0;virtualvoidunlock()=0;};在我看来,编译器不会知道我在lock()中调用pthread_mutex_lock(),在unlock()中调用pthread_mutex_unlock()

【ARM 嵌入式 编译系列 2.4 -- 编译参数-Wl,--gc-sections | -wsuggest-attribute=pure | -wreal-q-constant |】

请阅读【嵌入式开发学习必备专栏之ARMGCC编译专栏】文章目录概述编译参数详细介绍-Wl选项例子:--gc-sections``--gc-sections例子:-Wshadow例子:-Wlogical-op例子:-Waggregate-return例子:-Wfloat-equal例子:-Wconversion例子:-Wpointer-arith例子:概述在使用GCC(GNUCompilerCollection)进行编译时,可以通过不同的编译参数(标志)来控制编译行为、优化级别、警告输出等。以下是您列出的一些GCC编译参数的介绍:编译参数详细介绍参数作用–all-warnings与-Wall相同