小编Che*_*han的帖子

为什么volatile对象不能调用非易失性成员函数

为什么volatile对象不能调用非volatile成员函数?

在这种情况下const,调用非const成员函数违反了对象的常量是有道理的,因此它是被禁止的.但是,为什么在的情况下volatile

c++ volatile member-functions language-lawyer

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

ARM处理器上的BP寄存器(帧指针)相当于什么?

在intel平台上,BP用于指向堆栈帧的开头并访问参数[bp+0x??]和局部变量[bp-0x??].

ARM中使用哪个寄存器?或者,仅基于SP的寻址?

[我没有自行编译和反汇编的基础设施.参考AAPCS对我没有帮助]

assembly arm calling-convention

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

系统调用是否完整地在软件中断处理程序内执行?

系统调用是否完全在软件中断处理程序的上下文中执行?

我的意思是,某些系统调用(例如 read())可能需要很长时间才能返回,这违背了 ISR 的执行时间应该非常短的策略。系统调用是否被卸载到其他线程?这是如何运作的?

[引用任何内核都可以]

kernel interrupt system-calls

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

为什么struct中的double成员没有在8字节边界上对齐?

这是关于内存对齐的.在下面的代码中,我预计结构中b的偏移量为8(32位机器).看到这里.在那里,b总是发生在缓存行中.但事实并非如此.b全局对象中的成员struct test1似乎是对齐的.我不确定它是偶然的还是编译器是故意这样做的.

我想了解为什么编译器之后没有填充4个字节a.

struct test1
{
int a;
double b;
}t1;

int main()
{
struct test1 *p = malloc(sizeof(struct test1));
printf("sizes int %d, float %d, double %d, long double %d\n", sizeof(int), sizeof(float), sizeof(double), sizeof(long double));
printf("offset of b %d\n",(int)&(t1.b)-(int)&(t1));

printf("\naddress of b (on heap) = %p, addr of b (on data seg) = %p\n",&(p->b), &(t1.b));

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

输出是......

sizes int 4, float 4, double 8, long double 12
offset …
Run Code Online (Sandbox Code Playgroud)

c alignment

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

Jersey的异步REST API

我们使用Jersey作为REST Web服务(部署在tomcat上).

我知道

  • Tomcat的HTTP连接器有一个线程池,用于读取HTTP请求并转发到Jersey.
  • 转发到泽西岛是同步的.

在这里读到Jersey提供AsyncService最大化的并发性.

问题:为什么Jersey的异步设计迫使开发人员将REST处理卸载到单独的线程/ runnable,而Jersey可以通过专用/私有执行器池自行完成此操作?

这是为了更好地控制开发人员还是我错过了什么?

rest multithreading tomcat asynchronous jersey

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

为什么等待队列实现在循环中等待直到满足条件?

让我们考虑单处理器方案.

wait_event_interruptible() (或其他等待API)在循环中等待,直到满足某个条件.

现在,由于linux将线程实现为单独的进程,我相信错误的唤醒(在wait_event*没有满足条件的情况下被唤醒)表示程序/驱动程序中的错误.

我错了吗? - 是否有任何有效的情况会发生并使用这种虚假的醒来?换句话说,为什么在实现循环中等待条件wait_event*呢?

linux-device-driver linux-kernel

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

初始化顺序

我的问题与全局对象的初始化顺序有关。这里有一定程度的讨论:C++: When (and how) are C++ Global Static Constructors Called?

我想知道的是,如何保证某些系统库对象(尽管无法想到示例)在应用程序中使用之前已初始化?(我知道解决方案是将这样的对象包装在一个函数中,但我想了解它在今天的编译器中是如何处理的)

John Levine 的《链接器和加载器》一书中也讨论了这一点,同时讨论了 .init 和 .finit 部分,但目前的技术状况尚不清楚。

c++ initialization

2
推荐指数
1
解决办法
1835
查看次数