小编Fra*_*con的帖子

C++ std lib <mutex>、<conditional_variable> 库和共享内存

如果您想在共享内存中的进程之间共享互斥锁,则 POSIX 线程的 C API 需要设置一个特殊标志 - 请参阅sem_init()。我真的不知道差异是什么,但我在尝试在共享内存中使用 C++ std::condition_variable 时遇到了麻烦 - 它的段错误。我在 C++ 文档或构造函数中看不到任何提及这一点的内容。我想知道如何/是否可以在共享内存中使用 C++ 线程互斥体。这是我的测试代码供参考。Notesqueue只是一个简单的(POD)静态大小的循环队列,省略了不相关的内容:

#include <iostream>
#include <sys/mman.h>
#include <sys/stat.h>        /* For mode constants */
#include <fcntl.h>           /* For O_* constants */
#include "squeue.h"
#define SHM_FILENAME "/shimmy-foo"
#define SQUEUE_LENGTH 10

typedef struct {
        squeue<int,SQUEUE_LENGTH> queue;
        std::mutex mutex;
        std::condition_variable_any condvar;
} SHM;

int main() {
        int shm_fd = 0;
        SHM * shm_ptr = NULL;
        squeue<int,SQUEUE_LENGTH> * queue = NULL;
        std::mutex * mutex;
        std::condition_variable_any * …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading c++11

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

为什么RDF中的rdf:dataType子类rdf:Class?

RDF Schema 1.1开始

2.4 rdfs:数据类型

rdfs:Datatype是数据类型的类。rdfs:Datatype的所有实例都对应于RDF概念规范[RDF11-CONCEPTS]中描述的数据类型的RDF模型。rdfs:Datatype既是rdfs:Class的实例又是rdfs:Class的子类。rdfs:Datatype的每个实例都是rdfs:Literal的子类。

为什么rdfs:Datatype必须是rdf:Class?为什么它不能只是rdfs:Class的实例?我不理解子类化的含义。

rdf semantic-web ontology rdfs

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

C++ std 容器 - 没有指针的多态性。是否可以?

是否可以在不使用指针的情况下在任何std c++ 容器中维护派生类的知识,动态地从容器转换返回值?我知道我可以创建一个向量或一些基类类型的指针,并让它们保留它们的子类。但问题是我必须使用指针吗?

例子:

struct A {
  int x = 0, y = 0, z = 0;
  virtual void foo() { cout << "A" << endl; };
};

struct B : public A {
  int a = 1, b = 1, c = 1;
  virtual void foo() { cout << "B" << endl; };
};

int main() {  
  <SOMECONTAINER><A> a(2);
  a[0] = A();
  a[1] = B();
  B * p;
  B& n = dynamic_cast<B&>(a[1]); // Always throws?
  p = …
Run Code Online (Sandbox Code Playgroud)

c++ pointers c++11

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

标签 统计

c++ ×2

c++11 ×2

multithreading ×1

ontology ×1

pointers ×1

rdf ×1

rdfs ×1

semantic-web ×1