小编cla*_*laf的帖子

C:pthread数据特定的工作原理如何?

我不确定pthread数据特定是如何工作的:考虑下一个代码(在网上找到),这是否意味着我可以在main中创建例如5个线程,只在其中一些中调用func(比方说2) )那些线程将数据'key'设置为某些东西(ptr = malloc(OBJECT_SIZE)),而其他线程将具有相同的密钥但是具有NULL值?

static pthread_key_t key;
static pthread_once_t key_once = PTHREAD_ONCE_INIT;

static void
make_key()
{
  (void) pthread_key_create(&key, NULL);
}

func()
{
  void *ptr;

  (void) pthread_once(&key_once, make_key);
  if ((ptr = pthread_getspecific(key)) == NULL) {
    ptr = malloc(OBJECT_SIZE);
    ...
    (void) pthread_setspecific(key, ptr);
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

关于数据特定如何工作以及如何以pthread(简单方式)实现的一些解释将不胜感激!

c pthreads

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

C中的ASM给出-std = c99的错误

我现在愿意编写我的项目,-std=c99并且我正面临一个我目前不理解的错误.这一行:

my_type* td = ({ register kmy_type* arg0 asm("eax"); arg0; });
Run Code Online (Sandbox Code Playgroud)

仅在C99中给出以下错误:

warning: ISO C forbids nested functions
error: syntax error before ‘asm’
error: ‘arg0’ undeclared (first use in this function)
error: (Each undeclared identifier is reported only once
error: for each function it appears in.)
warning: ISO C forbids braced-groups within expressions
Run Code Online (Sandbox Code Playgroud)

欢迎任何线索帮助我理解这意味着什么.我没有写这一行,我也不确定它的目的是什么.

c assembly c99 inline-assembly

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

如何使用CMake自动生成C头文件?

我正在寻找一种自动生成头文件的方法.这个文件是库的公共接口,我想在编译之前"填充"一些结构和东西.

例如,在私有标头中,我有一个包含有用字段的结构:

typedef struct mystuff_attr_t {
  int                      _detachstate;
  mystuff_scope_t          _scope;
  cpu_set_t                _cpuset;
  size_t                   _stacksize;
  void*                    _stackaddr;
} mystuff_attr_t;
Run Code Online (Sandbox Code Playgroud)

我希望在没有字段但具有相同大小(目前手动完成)的公共标题中使用此结构:

typedef struct mystuff_attr_t {
  char _opaque[ 20 ]; 
} mystuff_attr_t;
Run Code Online (Sandbox Code Playgroud)

我想在创建构建系统时由CMake自动生成这个,以便在我更改私有头中的struct时避免公共接口中的大小结构错误.

c header cmake

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

Perl对象中的数组数组

我正在尝试在Perl对象中使用数组数组,但仍然无法正常工作。

这是构造函数:

sub new {
  my $class = shift;
  my $self = {};
  $self->{AoA} = [];
  bless($self, $class);
  return $self;
}
Run Code Online (Sandbox Code Playgroud)

这是将内容插入AoA的代码部分:

push (@{$self->{AoA}}[$row], $stuff);
Run Code Online (Sandbox Code Playgroud)

在构造函数中定义数组数组的方式中,我仍然找不到任何东西。

arrays perl perl-data-structures

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

maven不再使用新内核了

我对发生的事情感到有点失望.我不是maven专家(即我只是按照我的说法键入mvn clean install)但是当我在我的debian机器上安装了一个新内核时,似乎maven不再工作了:

在旧内核(2.6.26-1-amd64)上它很好地下载了所有依赖项.

在新内核(2.6.32-trunk-amd64)上,它无法通过"网络无法访问"消息下载依赖项:

[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/org/objectweb/fractal/parent/2.0/parent-2.0.pom
[WARNING] Unable to get resource 'org.objectweb.fractal:parent:pom:2.0' from repository central (http://repo1.maven.org/maven2): Error transferring file: Network is unreachable
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).


Project ID: null:cecilia:pom:2.2-SNAPSHOT

Reason: Cannot find parent: org.objectweb.fractal:parent for project: null:cecilia:pom:2.2-SNAPSHOT for project null:cecilia:pom:2.2-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

当然,网络似乎完全可达,因为这是我得到的网络问题.

mvn --version
2.2.1
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!谢谢

linux networking maven-2 linux-kernel

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

如何避免关于类型的printf警告

我想知道是否有一种很好的方法可以避免gcc尖叫关于printf类型:'warning:format'%d'需要类型为'int'的参数,但是参数12的类型为foo'

当你知道你在某处写了'typedef int foo'时,这真是太烦人了......

当然,我不是在寻找gcc修复([-Wformat]).

我想知道是否有一种方法可以避免警告而不是每次都进行投射!

c printf gcc warnings

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