Tag: primefaces

gccprimefaces内置函数

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Atomic-Builtins.html 我相信以下代码会primefaces地增加var的值。 volatile int var = 0; __sync_fetch_and_add( &var, 1 ) 我将上述代码理解为以下逻辑 : 加载变量var的地址 将数字1写入变量varprimefaces – 通过寄存器/缓存,以某种方式 但是,我怀疑以下是否也是primefaces的 volatile int var = 0; volatile int num = 1; __sync_fetch_and_add( &var, num ) 因为它可能被解释为 加载变量var的地址 将变量num的值加载到寄存器中 将值写入变量var。 执行#2之后,但在#3之前,CPU /线程被中断,另一个CPU /线程更新变量num的值。 换句话说,当使用gcc的_ sync *()时,我可以使用变量而不是常量作为第二个参数吗? 它不会破坏primefaces性吗?

哪些变量类型/大小在STM32微控制器上是primefaces的?

以下是STM32微控制器上的数据类型: http : //www.keil.com/support/man/docs/armcc/armcc_chr1359125009502.htm 。 这些微控制器使用32位ARM核心处理器。 哪些数据类型具有自动primefaces读取和primefaces写入访问权限? 我很确定所有32位数据类型都有(因为处理器是32位),并且所有64位数据类型都不行(因为读取或写入64位字需要至少2个处理器操作),但是bool (1字节)和uint16_t / int16_t (2字节)怎么样? 上下文:我在STM32上的多个线程(单核,multithreading,或称为FreeRTOS中的 “任务”)之间共享变量,需要知道是否需要通过关闭中断来强制执行primefaces访问,互斥体等 更新: 请参阅此示例代码: volatile bool shared_bool; volatile uint8_t shared u8; volatile uint16_t shared_u16; volatile uint32_t shared_u32; volatile uint64_t shared_u64; volatile float shared_f; // 32-bits volatile double shared_d; // 64-bits // Task (thread) 1 while (1) { // Write to the values in […]

x86上交换与比较和交换锁的相对性能

两种常见的锁定习语是: if (!atomic_swap(lockaddr, 1)) /* got the lock */ 和: if (!atomic_compare_and_swap(lockaddr, 0, val)) /* got the lock */ 其中val可以简单地为锁的新预期所有者的常量或标识符。 我想知道的是x86(和x86_64)机器上两者之间是否存在任何显着的性能差异。 我知道这是一个相当广泛的问题,因为单个cpu模型之间的答案可能差异很大,但这是我要求的原因之一,而不仅仅是我可以访问的几个cpus的基准测试。

C中的volatile int和C ++ 0x的std :: atomic 一样好吗?

我需要在我的程序中有primefaces变量。 以前我使用的是std::atomic ,但我现在正在使用的平台没有支持C ++ 0x的g ++编译器。 我使用了volatile int ,它似乎正在工作,因为我还没有在多核系统中遇到竞争条件,我正在测试它。 我的问题是volatile int是primefaces的,比如std::atomic吗? 此外,它是否会产生内存障碍(我也需要)?

UNIX便携式primefaces操作

在C中是否有(POSIX-)可移植方式用于primefaces变量操作,类似于使用pthread的可移植线程? primefaces操作是像“递增和获取”这样的操作,它们以primefaces方式执行,这意味着没有上下文切换可以干扰操作。 在Linux内核空间中,我们必须使用atomic_t类型,在Java中我们有java.util.concurrent.atomic包。 在Linux上,atomic.h文件提供primefaces操作,但include是平台相关的,例如#include ,它在Mac OS X上不能以类似的方式提供。

如果volatile对于线程无用,为什么primefaces操作需要指向易失性数据?

我从许多来源读到, volatile关键字 在multithreading场景中 没有帮助 。 但是,这个断言一直受到接受volatile指针的primefaces操作函数的挑战。 例如,在Mac OS X上,我们有OSAtomicfunction系列: SInt32 OSIncrementAtomic(volatile SInt32 *address); SInt32 OSDrecrementAtomic(volatile SInt32 *address); SInt32 OSAddAtomic(SInt32 amount, volatile SInt32 *address); // … 似乎在Windows上对于Interlocked操作有类似的volatile关键字用法: LONG __cdecl InterlockedIncrement(__inout LONG volatile *Addend); LONG __cdecl InterlockedDecrement(__inout LONG volatile *Addend); 似乎在C ++ 11中,primefaces类型具有使用volatile修饰符的方法,这必然意味着volatile关键字与primefaces性具有某种关系。 那么,我错过了什么? 为什么操作系统供应商和标准库设计者坚持使用volatile关键字进行线程化,如果它没用?

使用CAS以primefaces方式递增两个整数

显然,可以使用比较和交换指令以primefaces方式递增两个整数。 这个谈话声称存在这样的算法,但它没有详细说明它的样子。 如何才能做到这一点? (注意,一个接一个地递增整数的明显解决方案不是primefaces的。另外,将多个整数填充到一个机器字中并不算数,因为它会限制可能的范围。)

为什么x86的INC指令不是primefaces的?

我已经读过x86的INC指令不是primefaces的。 我的问题是怎么来的? 假设我们在x86-64上递增64位整数,我们可以用一条指令来完成,因为INC指令适用于内存变量和寄存器。 那么为什么它不是primefaces的呢?