小编eas*_*ger的帖子

boost :: lockfree :: spsc_queue忙等待策略.是否有阻止流行音乐?

所以我使用a boost::lockfree::spec_queue通过两个boost_threads在我的应用程序中运行两个对象的仿函数进行通信.

一切都很好,除了spec_queue::pop()方法是非阻塞的事实.即使队列中没有任何内容,它也会返回True或False.但是我的队列似乎总是返回True(问题#1).我想这是因为我预先分配了队列.

typedef boost::lockfree::spsc_queue<q_pl, boost::lockfree::capacity<100000> > spsc_queue;
Run Code Online (Sandbox Code Playgroud)

这意味着要有效地使用队列,我必须忙着等待不断使用100%cpu弹出队列.我宁愿不睡任意的时间.我已经在java中使用了其他队列,直到对象可用为止.这可以用std ::或boost :: data结构来完成吗?

c++ multithreading boost boost-thread lock-free

9
推荐指数
1
解决办法
4300
查看次数

Java垃圾收集和原子事件/停止gc暂停中断一系列函数调用

我有一个复杂的大型多线程应用程序,我正在介绍新的功能.

我已经添加了对一块专业硬件的调用(通过供应商提供的JNI lib).然而,在调用该函数(非常快)之前,预先完成一些工作以填充发送给它的数据结构.

然而,应用程序的GC配置文件非常不稳定/不良,似乎这些填充步骤中的一些正被GC中断.这很重要,因为时间需要在第一个事件和切换到硬件资源之间保持不变或尽可能保持不变.

有没有办法说,"sychronise for GC",这些操作使得它们在停止世界GC暂停期间不会被阻止?

在RHL5.5上使用64位1.7 JDK

谢谢

java performance garbage-collection jvm-hotspot

7
推荐指数
1
解决办法
560
查看次数

Android键盘api

android是否公开了API或者其他用于开发第三方键盘应用程序的东西?有几个现有的应用程序可以替换默认的输入方法,但我似乎无法找到任何有关它的信息.

android android-sdk-2.1

5
推荐指数
1
解决办法
2426
查看次数

Python networkx 和持久性(可能在 neo4j 中)

我有一个每秒在内存中创建数千个图形的应用程序。我希望找到一种方法来保存这些以供后续查询。它们并不是特别大(可能最多约 1k 个节点)。

我需要能够存储整个图形对象,包括节点属性和边缘属性。然后,我需要能够根据节点中的时间属性在特定时间窗口内搜索图形。

有没有一种简单的方法可以将这些数据强制转换为 neo4j ?我还没有找到任何这方面的例子。虽然我发现了几个 python 库,包括嵌入式 neo4j 和休息客户端。

手动遍历图形并以这种方式存储它的常见方法是?

有没有更好的持久性替代方案?

python directed-graph neo4j networkx

5
推荐指数
1
解决办法
1961
查看次数

堆栈上的char数组导致seg错误

这可能是预期的,但我只是好奇如何/为什么会发生这种情况.

当我尝试使用char *声明的本地char * foo = "\xFF\xFF..."作为整数时,它会出错.但是,如果我使用malloc,当我尝试访问它时,它可以很好地工作.为什么会这样?

#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
  unsigned char *buf = malloc(16);
  memcpy(buf, "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 16);
  //unsigned char *buf = "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"; // seg faults if you sue this instead

  uint64_t *k  = (uint64_t *) buf;
  uint64_t *k2 = (uint64_t *) (buf + 8);
  uint64_t i  = 1000000000;

  printf("-k =%" PRIu64 "\n", *k);
  printf("-k2=%" PRIu64 "\n", *k2);

  printf("Iter * %" PRIu64  "\n", …
Run Code Online (Sandbox Code Playgroud)

c arrays malloc

1
推荐指数
1
解决办法
100
查看次数

java Date(long)没有意义.. long不足以以毫秒为单位存储当前日期

java Date类需要一个long:

但是当前的毫秒级精度的日期/时间太大而不能持续很长时间.

Hello.java:14:整数过大:1335250803004 long l = 1335250803004;

那么这究竟是如何工作的呢?

java datetime date

0
推荐指数
1
解决办法
649
查看次数