小编caf*_*caf的帖子

在命名管道上选择

有没有办法在Win32中的命名管道上执行select()?我想让它在ReadFile调用中受阻,但是只有几秒钟,如果没有接收到数据,请执行其他一些工作。

windows named-pipes

4
推荐指数
1
解决办法
2736
查看次数

linux时间结果没有写入文件

我正在使用debian.使用time命令运行我的程序,并希望将时间结果写入文件,执行如下操作:

时间./myprog> out.asc

./myprog的输出写入out.asc但不是时间的结果.有没有办法把时间的输出发送到out.asc?感谢名单!

linux time sh

4
推荐指数
1
解决办法
1007
查看次数

System.out,stdout和cout是完全相同的吗?

System.out,stdout和cout分别是Java,C和C++中的完全相同的东西吗?

为什么同一个东西有三个不同的名称(特别是当C,C++和Java有很多共同点时)?

另外,我知道它们的用途是什么,但它们究竟是什么,在引擎盖下,我的意思是?

c c++ java iostream stdio

4
推荐指数
1
解决办法
6346
查看次数

在小数据中使用NamedPipe与TCP/IP


,如果我们将少量数据来回传递给客户端/服务器,那么tcp/ip的开销可以忽略不计,并且性能与同一台机器上的NamedPipe相同?

.net c# tcp named-pipes

4
推荐指数
1
解决办法
891
查看次数

优化有关寄存器的CUDA内核

我正在使用CUDA占用计算器来尝试优化我的CUDA内核.目前我正在使用34个寄存器和零共享内存......因此,每个块310个线程的最大占用率为63%.当我能以某种方式更改寄存器(例如,通过共享内存传递内核参数)到20或更低时,我可以获得100%的占用率.这是一个很好的方法吗?或者你建议我使用另一条优化路径?

此外,我还想知道是否有更新版本的Compute Capability 2.1占用计算器!?

optimization cuda

4
推荐指数
2
解决办法
2357
查看次数

公平的关键部分(Linux)

在多线程Linux应用程序中,我使用互斥锁来处理关键部分.除公平问题外,这种方法效果很好.一个线程离开临界区并立即重新进入并不会给任何其他线程带来机会.例如

while(true)
{
    critsect.enter();
    ... do calculations ...
    ... maybe call a blocking operation so we sleep ...
    critsect.leave();
}
Run Code Online (Sandbox Code Playgroud)

可能很可能会阻止任何其他线程进入同一个关键部分.互斥是不公平的.

是否有解决方案来制定公平的关键部分?我正在考虑添加一个队列,以便按照"到达"的顺序执行关键部分.或者至少一个计数器可能在解锁后执行pthread_yield(),如果其他线程正在等待.

是否有针对此类要求的推荐做法?

linux mutex pthreads critical-section

4
推荐指数
2
解决办法
7506
查看次数

Linux中的系统调用机制存在疑问

我们使用'int'或新的'syscall/sysenter'指令从ring3转到ring0.这是否意味着需要为内核修改的页表和其他内容是由'int'指令自动完成的,或者'int 0x80'的中断处理程序将执行所需的操作并跳转到相应的系统调用.

此外,当从系统调用返回时,我们再次需要转到用户空间.为此,我们需要知道用户空间中的指令地址以继续用户应用程序.存储的地址在哪里.'ret'指令是否会自动将ring从ring3更改为ring0或者这种环更换机制在何处/如何进行?

然后,我读到从ring3变为ring0并不像从ring0变为ring3那样昂贵.为什么会这样?

谢谢,巴拉

linux x86 system-calls

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

撤消 git 中的更改

我犯了一个错误,我拉下了更改,然后关闭了文本编辑器并保存了所有内容。因此,所有更改都被覆盖了。无论如何要撤消我的更改或强制撤回并覆盖我的更改?

请?

git

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

Linux驱动程序和device.h

我有一些直接来自制造商的canbus硬件的Linux驱动程序,但它们已经过时了(至少我的内核),让我自己照顾自己.在跳过一些箍之后,我在编译中遇到了一个错误,但这是一个我似乎无法动摇的错误.

错误是这样的:

./src/esdcan_pci.c:353:9: error: ‘struct device’ has no member named ‘driver_data’
Run Code Online (Sandbox Code Playgroud)

经过大量的互联网调查后,我几乎可以肯定它与我的内核device.h的头文件有关.我已打开标题并查看结构,果然,没有名为driver_data的成员.我不确定的是哪个成员是等价的,或者根本就是一个成员.这是我头文件中结构的版本:

struct device {
    struct device       *parent;

    struct device_private   *p;

    struct kobject kobj;
    const char      *init_name; /* initial name of the device */
    struct device_type  *type;

    struct mutex        mutex;  /* mutex to synchronize calls to
                     * its driver.
                     */

    struct bus_type *bus;       /* type of bus device is on */
    struct device_driver *driver;   /* which driver has allocated this
                       device */
    void        *platform_data; /* Platform specific data, device
                       core …
Run Code Online (Sandbox Code Playgroud)

c drivers linux-kernel

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

内核陆地套接字连接超时

再次,我需要你的内核模块的帮助.我已经实现了一个客户端模块,但每次连接函数都返回errno = 110(超时).我不明白为什么?为了测试这个模块,我在监听模式下启动了netcat(nc -vl -p4242).你对这个神秘的bug有什么建议吗?

int             init_module(void)
{
  struct socket*        sock = NULL;
  struct sockaddr_in*   dest = {0};
  int                   retVal = 0;

  dest = (struct sockaddr_in*)kmalloc(sizeof(struct sockaddr_in), GFP_KERNEL);
  sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, &sock);
  dest->sin_family = AF_INET;
  dest->sin_addr.s_addr = htonl(in_aton("127.0.0.1"));
  dest->sin_port = htons(4242);
  printk(KERN_EMERG "Connect to %X:%u\n", dest->sin_addr.s_addr, 4242);

  retVal = sock->ops->connect(sock, (struct sockaddr*)dest, sizeof(struct sockaddr_in), !O_NONBLOCK);
  if (retVal >= 0) {
    printk(KERN_EMERG "Connected\n");
    sock_release(sock);
  }
  else
    printk(KERN_EMERG "Error %d\n", -retVal);

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

调试输出(dmesg)

Message from syslogd@century at Sun Jun 19 …
Run Code Online (Sandbox Code Playgroud)

c sockets linux kernel-module linux-kernel

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