相关疑难解决方法(0)

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
查看次数

为什么在使用非静态记录器之前不会打印lazy_static slog :: Logger?

如果我取消create_log,都logLOG打印在控制台上.没有它,什么也没有打印出来.到底是怎么回事?

#[macro_use]
extern crate slog;
extern crate slog_term;
extern crate slog_async;
#[macro_use]
extern crate lazy_static;

use slog::Drain;

lazy_static! {
    static ref LOG: slog::Logger = create_log();
}

fn create_log() -> slog::Logger {
    let decorator = slog_term::TermDecorator::new().force_plain().build();
    let drain = slog_term::CompactFormat::new(decorator).build().fuse();
    let drain = slog_async::Async::new(drain).build().fuse();
    slog::Logger::root(drain, o!())
}

fn main() {
    info!(LOG, "LOG");  // NOT printed unless next line is uncommented

    // let log = create_log();     // enables printing both log and LOG
    // info!(log, "log"); …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

c ×1

fork ×1

mutex ×1

parallel-processing ×1

process ×1

rust ×1