小编fla*_*urn的帖子

在信号量的上下文中P和V操作的原始含义是什么?

有谁知道为什么信号量操作被称为P和V?每次我阅读有关信号量的章节时,都会说出如下内容:

为了使线程获得资源,它执行P操作.并且为了让线程释放资源,它执行V操作.

P和V代表什么?为什么他们不被称为等待和信号?

semaphore

13
推荐指数
2
解决办法
9966
查看次数

对齐malloc实现的解释

这不是作业,这纯粹是为了我自己的个人教育.

我无法弄清楚如何实现一个对齐的malloc所以在网上查找并找到了这个网站.为方便阅读,我将发布以下代码:

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

void* aligned_malloc(size_t required_bytes, size_t alignment)
{
    void* p1; // original block
    void** p2; // aligned block
    int offset = alignment - 1 + sizeof(void*);
    if ((p1 = (void*)malloc(required_bytes + offset)) == NULL)
    {
       return NULL;
    }
    p2 = (void**)(((size_t)(p1) + offset) & ~(alignment - 1));
    p2[-1] = p1;
    return p2;
}

void aligned_free(void *p)
{
    free(((void**)p)[-1]);
}

void main (int argc, char *argv[])
{
    char **endptr;
    int *p = aligned_malloc (100, strtol(argv[1], …
Run Code Online (Sandbox Code Playgroud)

c malloc pointers

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

如何卸载Qt5

不知何故,我最终在我的Ubuntu 14.04 LTS机器上安装了 2 个版本的 Qt ,Qt4 和 Qt5。这是输出qtchooser -list-versions

4
5
config
default
qt4-i386-linux-gnu
qt4-x86_64-linux-gnu
qt4
qt5-x86_64-linux-gnu
qt5
Run Code Online (Sandbox Code Playgroud)

如何删除qt5?

qt qt4 qt5 ubuntu-14.04

10
推荐指数
4
解决办法
6万
查看次数

在ubuntu中运行ddd时发出警告

我刚刚在Ubuntu 14.04 LTE上安装了ddd.如果我在命令行上运行它,我会收到以下警告:

user@user-VirtualBox:~/projects/myproject$ ddd
Warning: Cannot convert string "-*-helvetica-medium-r-*-*-*-120-*-*-*-*-iso8859-*" to type FontStruct
(Annoyed?  Try 'Edit->Preferences->General->Suppress X Warnings'!)
Warning: Cannot convert string "-*-helvetica-medium-r-*-*-*-100-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-lucidatypewriter-medium-r-*-*-*-120-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-lucidatypewriter-bold-r-*-*-*-120-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-helvetica-medium-*-*-*-*-120-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-helvetica-bold-*-*-*-*-120-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-helvetica-bold-r-*-*-*-180-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-symbol-*-*-*-*-*-120-*-*-*-*-adobe-*" to …
Run Code Online (Sandbox Code Playgroud)

ubuntu ddd-debugger

8
推荐指数
1
解决办法
2031
查看次数

指令和微操作之间的区别

机器指令和微操作有什么区别?我在这里找到了以下定义:

一个小的基本指令,串联使用以组成高级机器指令

这是我在维基百科上发现的

在计算机中央处理单元中,微操作(也称为微操作或微操作)是在一些设计中用于实现复杂机器指令的详细低级指令(在此上下文中有时称为宏指令)

我是否理解微操作是在给定周期中执行的处理器指令.比如和ADD,SUB,MUL,ST,LD一样.我错过了什么吗?

任何帮助表示赞赏.

assembly instructions machine-instruction

8
推荐指数
1
解决办法
3520
查看次数

修复“新枚举必须创建为”

我正在使用 Python 2 并且有以下课程

import enum

class MyClass(object):
    pass

@enum.unique
classMyEnum(enum.IntEnum, MyClass):
    A = 1
    B = 2
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,出现以下错误:

  File "C:\Python27\lib\site-packages\enum\__init__.py", line 506, in _get_mixins_
    raise TypeError("new enumerations must be created as "
TypeError: new enumerations must be created as `ClassName([mixin_type,] enum_type)`
Run Code Online (Sandbox Code Playgroud)

我经常使用 Python,但我必须承认我从未真正投入其中。我真的无法弄清楚发生了什么。我不太确定如何阅读此错误。有人可以帮我解决这个问题吗?

python enums typeerror python-2.7

8
推荐指数
1
解决办法
2439
查看次数

LLVM DAG中的胶水和链依赖性是什么?

我对LLVM和编译器有些新意.

我决定使用以下命令生成DAG

llc -view-sched-dags hello_world.ll
Run Code Online (Sandbox Code Playgroud)

我有一个非常大的图表,具有不同的依赖类型."LLVM核心库入门"一书解释说:

黑色箭头表示数据流依赖性
红色箭头表示胶水依赖性
蓝色虚线箭头表示链依赖性

我清楚地记得 在学校的编译器类中讨论数据流依赖性.但我不记得谈论其他两个.有人可以解释其他依赖的含义吗?任何帮助表示赞赏.

hello_world.cpp

#include <stdio.h>
#include <assert.h>

int sum(int a, int b) {
  return a + b;
}

int main(int argc, char** argv) {
  printf("Hello World! %d\n", sum(argc, 1));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

hello_world.ll

; ModuleID = 'hello_world.cpp'
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = private unnamed_addr constant [17 x i8] c"Hello World! %d\0A\00", align 1

; Function Attrs: nounwind uwtable
define i32 @_Z3sumii(i32 …
Run Code Online (Sandbox Code Playgroud)

dependencies graph llvm

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

Python中'\ 0\0'的含义?

我正在查看第三方API,他们有以下代码:

def array_u16 (n): return array('H', '\0\0'*n)
Run Code Online (Sandbox Code Playgroud)

我明白这'\0'意味着NULL,确实'\0\0'有任何特殊意义,或仅仅意味着2 NULL秒?

python string python-2.7 python-3.x

7
推荐指数
3
解决办法
4051
查看次数

/ etc / lsb-release与/ etc / os-release

我需要找出我正在使用bash运行的Linux发行版。找到此页面,这非常有帮助。

但是我的系统有两个/ etc / *-release文件

/etc/lsb-release
/etc/os-release
Run Code Online (Sandbox Code Playgroud)

似乎os-release有更多的信息,但是看起来这两个文件本质上都做同样的事情。有谁知道他们之间有什么区别?当我们这样做时lsblsb-release代表什么呢?

linux bash

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

为什么在python线程中监视键盘中断不起作用

我有一个非常简单的python代码:

def monitor_keyboard_interrupt():

  is_done = False 

  while True:
    if is_done
      break
    try:
      print(sys._getframe().f_code.co_name)
    except KeyboardInterrupt:
      is_done = True

def test():
  monitor_keyboard_thread = threading.Thread(target = monitor_keyboard_interrupt)
  monitor_keyboard_thread.start()
  monitor_keyboard_thread.join()

def main():
  test()

if '__main__' == __name__:
  main()
Run Code Online (Sandbox Code Playgroud)

但是,当我按下"Ctrl-C"时,线程不会停止.有人可以解释我做错了什么.任何帮助表示赞赏.

python multithreading

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