小编m.s*_*.s.的帖子

"中断安全"一词是什么意思?

我时不时地遇到这个词.现在我真的需要一个明确的解释,因为我希望使用一些被认为不是中断安全的MPI例程.

parallel-processing interrupt mpi

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

Ember.js获得当前路线

我正在切换到新的ember路由器,但有一个非常简单的问题 - 我如何找出我目前的路线?在您做某事之前App.router.get('currentState'),这似乎不再起作用,因为路由器不再继承StateManager

ember.js ember-router

6
推荐指数
2
解决办法
6402
查看次数

共享内存中的单个生产者/消费者环缓冲区

最近我一直在玩IPC使用共享内存.我一直试图实现的一件事是一个简单的环形缓冲区,其中包含1个进程生成和1个进程消耗.每个进程都有自己的序列号来跟踪其位置.使用原子操作更新这些序列号,以确保其他进程可以看到正确的值.一旦环形缓冲区已满,生产者将阻止.代码是无锁的,因为没有使用信号量或互斥量.

性能方面我在相当适中的VM上每秒获得大约2000万条消息 - 非常满意:)

我对我的代码是如何"正确"感到好奇.有人能发现任何固有问题/竞争条件吗?这是我的代码.提前感谢您的任何意见.

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
#include <string.h>

#define SHM_ID "/mmap-test"
#define BUFFER_SIZE 4096
#define SLEEP_NANOS 1000   // 1 micro

struct Message
{
    long _id;
    char _data[128];
};

struct RingBuffer
{
    size_t _rseq;
    char _pad1[64];

    size_t _wseq;
    char _pad2[64];

    Message _buffer[BUFFER_SIZE];
};

void
producerLoop()
{
    int size = sizeof( RingBuffer );
    int fd = shm_open( SHM_ID, O_RDWR | O_CREAT, 0600 );
    ftruncate( fd, size+1 );

    // create …
Run Code Online (Sandbox Code Playgroud)

c c++ linux multithreading thread-safety

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

如何防止在GitLab中创建组

我在公司设置了GitLab 7.12.但是用户开始创建群组(以及群组和群组......),很快就会变得一团糟.有谁知道如何将组创建限制为平台的管理员?

这个想法是让人们在他们的个人空间中创建项目,并为官方团体保留团体.

gitlab

6
推荐指数
3
解决办法
4812
查看次数

向上转换时隐式转换与static_cast

假设我有三个类:A(母亲,抽象),B和C,A的孩子.

所以B和C继承自A(公共继承).我有一个指向A的指针列表,我用B或C指针填充.

问题是:在进行铸造/转换时哪个是首选的样式?

class A {};
class B : public A {};
class C : public A {};

B* objB = new B();
C* objC = new C();

std::list<A*> myList;
// Option A: static cast conversion
myList.push_back(static_cast<A*> (objB));
myList.push_back(static_cast<A*> (objC));

// Option B: implicit conversion
myList.push_back(objB);
myList.push_back(objC);

// Option C: C-style conversion (I understand that this is evil and must be avoided)
myList.push_back((A*) objB);
myList.push_back((A*) objC);
Run Code Online (Sandbox Code Playgroud)

那么,就清晰度(代码风格)而言,在安全性方面,哪一个更好?我知道static_cast更容易搜索,但在这种情况下,隐式转换应该足够了.

c++ casting coding-style upcasting

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

在MATLAB图例中合并线条

我有两个数据集,我想在同一个图中绘制,例如两个余弦和两个正弦图只是幅度不同:

x = -pi:pi/20:pi;
hold all;
amplitude = 1;
plot(x,amplitude*cos(x),'-');
plot(x,amplitude*sin(x),'-');

ax = gca;
ax.ColorOrderIndex = 1;

amplitude=3;
plot(x,amplitude*cos(x),'.');
plot(x,amplitude*sin(x),'.');

legend('1*cos(x)','1*sin(x)', '2*cos(x)','2*sin(x)');
hold off;
Run Code Online (Sandbox Code Playgroud)

当前

我想"压缩"图例,以便两个线条(法线和虚线)"合并"并出现在图例中相同的文本条目旁边,例如:

期望

我怎样才能在MATLAB中实现这一目标?我目前正在使用R2015b.

matlab legend

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

在 linux 上未定义对 `hb_ft_font_create' 的引用

编译 pango 时出现此错误:

lib/libfreetype.so: undefined reference to `hb_ft_font_create'
Run Code Online (Sandbox Code Playgroud)

我已经编译了 freetype 和 harfbuzz;我也通过-lfreetype-lharfbuzzLIBS变量中。

pango freetype harfbuzz

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

GPU排序与CPU排序

我对归并排序算法做了一个非常简单的实现,然后我将其用于 CUDA,只需很少的实现更改,算法代码如下:

//Merge for mergesort
__device__ void merge(int* aux,int* data,int l,int m,int r)
{
    int i,j,k;
    for(i=m+1;i>l;i--){
        aux[i-1]=data[i-1];
    }
    //Copy in reverse order the second subarray
    for(j=m;j<r;j++){
        aux[r+m-j]=data[j+1];
    }
    //Merge
    for(k=l;k<=r;k++){
        if(aux[j]<aux[i] || i==(m+1))
            data[k]=aux[j--];
        else
            data[k]=aux[i++];
    }
}

//What this code do is performing a local merge
//of the array
__global__
void basic_merge(int* aux, int* data,int n)
{
    int i = blockIdx.x*blockDim.x + threadIdx.x;
    int tn = n / (blockDim.x*gridDim.x);
    int l = i * tn;
    int r = …
Run Code Online (Sandbox Code Playgroud)

sorting algorithm mergesort cuda gpgpu

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

Docker错误拨号unix /var/run/docker.sock:没有这样的文件或目录

我用来boot2docker安装但最近为Mac安装了Docker ToolBox应用程序(运行10.11).当我打开iTerm并输入时,docker ps我收到以下消息.

Get http:///var/run/docker.sock/v1.20/containers/json: dial unix /var/run/docker.sock: no such file or directory.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?
Run Code Online (Sandbox Code Playgroud)

我用来使用boot2docker所以我假设现在需要ToolBox.我启动了Docker quick start terminal只在终端内部工作的应用程序.但是,我想在我自己的终端等中使用docker.

为什么我会收到此错误?怎么修?

macos ubuntu docker boot2docker

5
推荐指数
2
解决办法
3489
查看次数

C++ 模板中的代码重用(或不重用)

到目前为止我读过的所有书籍中,他们都说 C++ 模板为我们使用的每种类型生成一个代码实例。

另一方面,书上说在 C# 中代码是重用的。

因此,我在许多书籍中进行了搜索,并在一本很旧的书中找到了以下 C# 示例。

1) 值类型

List<int> intList1  = new List<int>();
List<int> intList2  = new List<int>();
List<bool> boolList = new List<bool>();
Run Code Online (Sandbox Code Playgroud)

在这种情况下(值类型),编译器为 intList1 和 intList2(相同类型)生成一个代码实例,并为 boolList 生成一个代码实例。

2) 参考类型

List<Dog> dogList1 = new List<Dog>();
List<Dog> dogList2 = new List<Dog>();
List<Cat> catList  = new List<Cat>();
Run Code Online (Sandbox Code Playgroud)

在这种情况下(引用类型),编译器只为dogList1、dogList1和catList生成一个代码实例,因为只要它可以表示指向对象的指针,所有引用类型都可以共享一个实现。

这对我(作为 C++ 开发人员)来说非常清楚,但我对有关 C++ 模板的同样的事情感到好奇。

早在 C# 创建之前,C++ 也有值类型和引用类型。

因此,让我们用 C++ 重写 avove 示例

1) 值类型

vector<int> intList1;
vector<int> intList2;
vector<bool> boolList;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我毫不怀疑 intList1 和 intList2 共享相同的代码,并且 boolList 需要另一个实现

2) …

c++ templates

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