我想创建并行运行的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) 如果我取消create_log,都log和LOG打印在控制台上.没有它,什么也没有打印出来.到底是怎么回事?
#[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)