小编use*_*798的帖子

procs,fork()和互斥锁

我想创建并行运行的n个进程,让它们锁定互斥锁,递增计数器,然后解锁并退出.

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <unistd.h>
#include <pthread.h>

pthread_mutex_t mutex;

int main(int argc, char **argv) {

  if (argc != 2)
    return 0;
  int n = atoi(argv[1]);
  int i = 0;
  int status = 0;

  pthread_mutex_init(&mutex, NULL);

  pid_t pid = 1;
  static int *x;
  x = mmap(NULL, sizeof *x, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
  *x = 0;

  printf("Creating %d children\n", n);

  for(i = 0; i < n; i++) {
    if …
Run Code Online (Sandbox Code Playgroud)

c parallel-processing mutex fork process

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

在CUDA中按键排序(小)数组

我正在尝试编写一个函数,它接受一组未分类的键/值对,例如

<7, 4>
<2, 8>
<3, 1>
<2, 2>
<1, 5>
<7, 1>
<3, 8>
<7, 2>
Run Code Online (Sandbox Code Playgroud)

并按键对它们进行排序,同时使用相同的键减少对的值:

<1, 5>
<2, 10>
<3, 9>
<7, 7>
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用__device__类似下面的一个函数,它本质上是一个bitonic排序,它将组合相同键的值并将旧数据设置为一个无限大的值(仅99用于现在),以便后续的bitonic排序将筛选它们到底部并且数组被int *删除的值切割.

__device__ void interBitonicSortReduce(int2 *sdata, int tid, int recordNum, int *removed) {
  int n = MIN(DEFAULT_DIMBLOCK, recordNum);
  for (int k = 2; k <= n; k *= 2) {
    for (int j = k / 2; j > 0; j /= 2) {
      int ixj = tid …
Run Code Online (Sandbox Code Playgroud)

sorting parallel-processing reduce cuda cub

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

在多个分叉进程之间共享指针

如果我想char **keysfork()'d进程之间共享类似数组的东西shm_open,mmap我可以将指针指向keys共享内存段,还是必须将所有数据复制keys到共享内存段?

share pointers fork process shared-memory

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

带有gnuplot的灰度直方图

我是gnuplot的新手,我想为任意长度的数据集绘制三重直方图.这是我的代码,但该行set palette gray似乎没有任何效果 - 一切仍然是RGB.我在这里错过了什么?

set terminal pdf enhanced
set output 'out.pdf'

set palette gray

set style data histogram
set style histogram cluster gap 1

set style fill solid 1
set auto x
set yrange [0:*]
plot 'in.dat' using 2:xtic(1) title col, \
        '' using 3:xtic(1) title col, \
        '' using 4:xtic(1) title col
Run Code Online (Sandbox Code Playgroud)

gnuplot histogram grayscale

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

函数的多个定义,首先在此定义

我正在为大学项目开发​​扫描仪/解析器,我遇到了这个错误:

stack.c 91:'[stack.c中的所有函数]'
stack.c的多重定义:首先在这里定义

由于某种原因,我似乎无法弄清楚编译器似乎告诉我,我已经在同一个地方多次定义了相同的函数.

我得到了一些框架代码和一个makefile,因此在我自己编写的文件(stack.c,stack.h)和其余代码之间必须存在某种不正确的通信.

我一直在#includes和makefile乱搞一个多小时,现在又遇到了越来越多的问题.应如何设置?

stack.c并且stack.h是在使用我写小文件symtab.csymtab.h.

c definition

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