小编Joh*_*ica的帖子

C++线程池性能低下

int step = 100;
for (int i = 0; i < jobs.size(); i += step) {
    thread_pool* osgbpool=new thread_pool(mt);
    for (size_t k = 0; k < step; ++k) {
        if (i + k == jobs.size())
        {
            break;
        }
        else {
            auto it = jobs[i + k];
            osgbpool->push_task(processProjectMainNoTrans, it, out_path);
        }
    }
    osgbpool->wait_for_tasks();
    delete osgbpool;

}
Run Code Online (Sandbox Code Playgroud)

上面的代码是我的C++代码。有一些解释,jobs是我的作业队列;osgbpool 是我的线程池;随着时间的推移,我会发现CPU越来越低,应用程序变得越来越慢。因此,我想知道为什么会出现这种情况?

这是我的 threadpool.h 和 threadpool.cpp :

#pragma once

/**
 * @file thread_pool.hpp
 * @author Barak Shoshany (baraksh@gmail.com) (http://baraksh.com)
 * @version 2.0.0
 * @date 2021-08-14 …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

0
推荐指数
1
解决办法
3358
查看次数

const char* 和 char[](字符数组)

int main(){
  const char *a[] = {"zero","one"};
  char b[] = "zero";
  bool c = b==a[0];
}
Run Code Online (Sandbox Code Playgroud)

为什么是boolvaluezero因为我传递了相同的字符串以及如何将其设为1

c++

0
推荐指数
1
解决办法
453
查看次数

用一个衬垫将时间戳替换为文件中的当前时间

我有一个包含时间戳的文件:

"buildTimestamp": "2021-07-19T17:00:00Z"
Run Code Online (Sandbox Code Playgroud)

我想使用一行命令将其替换为当前的构建时间。

date | xargs -I {} perl -pi -e 's/2021-07-19T17:00:00Z/"$0"/g' serviceProperties.json 
Run Code Online (Sandbox Code Playgroud)

但它没有按预期工作。有什么建议么?

shell perl json

0
推荐指数
1
解决办法
130
查看次数

shell 脚本中的混合代码。共享变量

我有一个 shell 脚本,里面有一段 python 代码。如何将versionshell 脚本中的变量共享给这段 python 代码?

#!/bin/sh

version="1"

output=$(python -c '
import sys;
import json;
if $version == 1:
   print("yes")

        ')

echo $output
Run Code Online (Sandbox Code Playgroud)

它给出语法错误:语法无效..

python bash

0
推荐指数
1
解决办法
126
查看次数

在嵌套范围内覆盖结构字段(与其他字段具有相同的生命周期)时出现“X 的生存时间不够长”错误

我实现了一个结构,其中为所有引用字段提供了相同的生命周期。当我覆盖内部范围内的字段时,生命周期似乎不起作用。我收到错误:

错误[E0597]:str2寿命不够长

这是我的代码:

struct Test<'a> {
    a: Option<&'a String>,
    b: Option<&'a String>,
}

impl<'a> Test<'a> {
    pub fn new(a: Option<&'a String>) -> Self {
        Self {
            a,
            b: None,
        }
    }
}

fn main () {
    let str1 = String::from("test1");
    let mut test = Test::new(Some(&str1));
    {
        let str2 = String::from("test2");
        test.b = Some(&str2);
    }

    println!("{:?} and {:?}", test.a, test.b);
}
Run Code Online (Sandbox Code Playgroud)

这是最小的沙箱实现

您能解释一下如何强制引用在定义的生命周期内工作吗?为什么在这种情况下代码不能编译?

rust

0
推荐指数
1
解决办法
82
查看次数

realloc 可以用来将 ** 指针更改为 * 指针吗?

此代码来自Zed Shaw 的《Learn C The Hard Way》。在练习 34 中,实践问题之一是实现动态数组,它只是包含在结构中的指针数组。

该结构如下所示:

typedef struct DArray {
    int end;
    int max;
    size_t element_size;
    size_t expand_rate;
    void **contents;
};
Run Code Online (Sandbox Code Playgroud)

要初始化其中之一,我们使用 DArray_create()

DArray *DArray_create(size_t element_size, size_t initial_max)
{
    DArray *array = malloc(sizeof(DArray));
    array->max = initial_max;

    array->contents = calloc(initial_max, sizeof(void *));

    array->end = 0;
    array->element_size = element_size;
    array->expand_rate = 300;

    return array;
}
Run Code Online (Sandbox Code Playgroud)

还有一个调整数组大小的函数:

static inline int DArray_resize(DArray *array, size_t newsize)
{
    array->max = newsize;

    void *contents = realloc(array->contents, array->max * sizeof(void *));

    array->contents …
Run Code Online (Sandbox Code Playgroud)

c arrays struct pointers

0
推荐指数
1
解决办法
109
查看次数

使用 xargs 重命名一堆文件

我一直在尝试使用 xargs 按正确的顺序重命名一堆文件,但无济于事。在挖掘成堆的类似问题时,我通过使用 sed 和 xargs 找到了答案。新手我想避免使用sed。我想一定有一些更简单的方法。

更具体地说,我有一些文件如下:

Abc.jpg
Def.jpg
Ghi.jpg
Jkl.jpg
Run Code Online (Sandbox Code Playgroud)

我希望它们以有序的方式重命名,例如:

Something1.jpg
Something2.jpg
Something3.jpg
Something4.jpg
Run Code Online (Sandbox Code Playgroud)

xargs命令可以seq实现这一目标吗?如果是这样,我该如何实施?

bash shell xargs

0
推荐指数
1
解决办法
201
查看次数

对于大于 12 的数字,阶乘给出错误答案

用户输入一个数字,该数字将传递给 calcFactorial 函数。只要数字大于零,循环就会重复。该数字将乘以结果中存储的任何内容。每次重复循环时,x 都会减一。

当我测试它时,程序只能运行到 12。之后我会得到错误的数字。数字太大了吗?我不确定问题是什么。

#include <stdio.h>

long calcFactorial(int x){
    long result = 1;
    while(x > 0){
        result *= x;
        x--;
    }
    return result;
}
int main(){
    int x;
    printf("Enter a number: ");
    scanf(" %d",&x);
    printf("%d",calcFactorial(x));
}
Run Code Online (Sandbox Code Playgroud)

c factorial

0
推荐指数
1
解决办法
170
查看次数

生成 N 个空格的字符串的规范方法?

在 Go 中生成 N 个空格的字符串的规范方法是什么,类似于' ' * n在 Python 中?

我目前正在自己​​构建它,如下所示。

func spaces(n int) string {
    var sb strings.Builder
    for i := 0; i < n; i++ {
        sb.WriteString(" ")
    }
    return sb.String()
}
Run Code Online (Sandbox Code Playgroud)

string go

0
推荐指数
1
解决办法
430
查看次数

分配二维结构数组

我想分配一个自定义类型“cell”的二维数组,它是一个结构。但是,我做错了,请参阅下面的代码。你能告诉我我的错误在哪里吗?

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
  int variable_1;
  int variable_2;
  int variable_3;
} cell;


void initialiseArray(unsigned long rows, unsigned long columns, cell array[rows][columns])
{
  for (int i = 0; i < rows; i = i + 1)
    for (int j = 0; j < columns; j = j + 1)
    {
      array[i][j].variable_1 = 0;
      array[i][j].variable_2 = 0;
      array[i][j].variable_3 = 0;
    }
}

int main()
{
  unsigned long rows = 200;
  unsigned long columns = 250;
  cell* array[rows];
  for …
Run Code Online (Sandbox Code Playgroud)

c struct multidimensional-array

0
推荐指数
1
解决办法
71
查看次数