小编0.s*_*.sh的帖子

竞争条件也可能出现在传统的单线程程序中 - Clarity

在过去的几个月里,我已经阅读了几本关于并行编程的书籍,我决定通过学习posix线程来关闭它.

我正在阅读" PThreads编程 - 更好的多处理坚果壳手册的Posix标准 ".在第5章(Pthreads和Unix)中,作者讨论了在多线程程序中处理信号.在" Threadsafe库函数和系统调用 "一节中,作者发表了一篇声明,我在大多数书中都没有看到我读过并行编程.声明是:

竞争条件也可能发生在使用信号处理程序或递归调用例程的传统单线程程序中.这种单线程程序在其进程栈上的各种调用帧中可能具有相同的例程.

我觉得破译这句话有点乏味.当递归函数使用静态存储类型保持内部结构时,是否会出现递归函数中的竞争条件?

我也很想知道信号处理程序如何在单个线程程序中引起比赛条件

注意:我不是计算机科学专业的学生,​​我真的很感谢简化术语

c multithreading pthreads

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

使用 bash 连接到开放端口

有没有可能使用 bash 连接到任何开放端口?即不调用任何外部命令。:) 我想使用 bash 连接到开放端口,而不使用 nc 或 telnet。

shell scripting

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

使用数组时出现语法错误

我正在创建一个函数,第一个参数将被用作一个全局变量,它保存由参数的其余部分填充的数字数组,但是在分配值时我得到语法错误,但是如果我只是为变量分配一个标量有用.这是下面的代码

的值new_set_name,其是a将容纳所有的数组元素

#!/usr/bin/env bash

create() {

    local new_set_name=${1}

    shift;

    declare -g ${new_set_name}=( ${@} );    
    echo ${!new_set_name}
}

create a 1 2 3 4

echo ${a[@]}
Run Code Online (Sandbox Code Playgroud)

但如果我用标量试了它就行了

#!/usr/bin/env bash

create() {

    local new_set_name=${1}

    shift;

    declare -g ${new_set_name}=1;

    echo ${!new_set_name}
}

create a 1 2 3 4

echo ${a[@]}
Run Code Online (Sandbox Code Playgroud)

看到它适用于标量并且错误是为数组吐出的,我有点惊讶.我怎么解决这个问题?

bash shell

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

尝试访问函数构造函数内部的变量时出现引用错误

阅读有关Function构造函数和function声明之间区别的 mdn 文档。此处指定的示例适用于浏览器和 node.js repl,但在通过文件尝试时,node.js 进程因此错误而崩溃

ReferenceError: x is not defined

这是程序

var x = "bar";

function test() {
    var x = "baz";
    return new Function("return x;");
}

var t = test();
console.log(t());

Run Code Online (Sandbox Code Playgroud)

当从带有 node.js 的文件执行时,此示例无法按预期工作的可能原因是什么?

javascript node.js

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

awk FIELDWIDTHS如何工作

几天前我开始学习awk编程(有效的awk脚本).在第102页,作者正在解释字段宽度,但我不明白它是如何工作的.有人可以向我解释一下,如何使用fieldwidths吗?

awk gnu

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

假设导致总线错误的代码块执行正常

我目前正在阅读Expert C Programmign - Deep C Secrets.在作者解释总线错误和分段错误的第164页上,他展示了这行代码

union { 
  char a[10];
  int i;
} u ;

int * p = ( int * ) &(u.a[1]);
*p = 17; /* the misaligned addr in p causes a bus error */
Run Code Online (Sandbox Code Playgroud)

上面的代码假设触发了一个总线错误,但是当我运行它时,它运行正常没有任何错误.作者给出了以下解释

这会导致总线错误,因为数组/ int联合确保字符数组"a"也处于整数的合理对齐地址,因此"a + 1"绝对不是.然后,我们尝试将4个字节存储到仅为单字节访问对齐的地址中.一个好的编译器会警告错位,但它不能发现所有事件.

我对上述陈述的理解是,char1个字节,我们试图int在索引上放置一个4字节,char a[10]因此会发生总线错误(我不确定我的理解是对还是错)

我的问题是为什么上面的代码不会导致总线错误.

注意:我不是CS学生,简单的解释会有所帮助.

注意:已经提出了一个对这个问题看起来很熟悉的问题,但我只针对上面的代码块.

c segmentation-fault bus-error

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