问题标签 [context-switch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp-classic - 经典的 asp——最好做很多 response.write 或使用 <%
我在经典 ASP 中编辑一些遗留代码,这些代码使用大量如下代码:
response.write
在此示例中,pf 是一个实用函数,它与换行符 基本相同。
我宁愿做这样的事情:
我是asp的新手,但我听说过上下文切换,而且它可能很昂贵。这两个选项哪个更昂贵?
c - 高效切换堆栈
由于某种原因,我切换堆栈以在我的应用程序中调用某些函数。为此,我使用makecontext/getcontext/swapcontext。但是,我发现它太慢了。为此,我尝试使用定制代码,它保存堆栈指针和其他寄存器,然后为堆栈指针分配我想用作堆栈的新内存的值。但是,我不断收到堆栈粉碎检测到的错误。
操作系统是否为堆栈设置了一些特殊权限,否则这里有什么问题?如何规避问题。
.net - 任务线程上下文切换
我正在阅读并阅读到,如果我在 .Net 中使用任务而不是线程,它们将不会受到线程有问题的上下文切换的影响。
然而,阅读时我也注意到任务只是在幕后使用线程。
所以我有点困惑,任何澄清表示赞赏。
process - 以下哪项涉及上下文切换?
以下哪项涉及上下文切换?
A. 系统调用
B. 特权教学
C. A & B
D. 这些都不是
embedded - Context switching in uC/OS (embedded systems)
I'd like to know if its possible to have an interrupt force the scheduler to switch context to a specific task in RTOS. I'm working with microCOS OS
Here is the task which performs the keyscan and posts the character into a mailbox, I need to add some more features to this code like debounce and auto repeat but I need to sort out a trigger mechanism to get it working properly.
I am not sure how to use polling or interrupts to accomplish this
linux - 在下面的模型中从上下文切换到颠簸的退化?
我有一个组件,它执行以下操作
- 使用基于源 A 的 tcp/ip 构建的自定义协议通过网络接受 SINGLE 消息
- 处理消息(大约需要 500 微秒)
- 使用基于 tcp/ip 构建的自定义协议通过网络将消息发送到不同的组件,例如端点 B
- 从端点 B 接收 ACK
- 向源 A 发送 ACK
冲洗并重复上述 5 个步骤。重要的是要了解源 A 不会发送第二条消息,直到它收到前一条消息的 ACK。
如您所见,该进程在以下情况下处于空闲状态
源 A 通过网络向组件发送一条消息的时间。源 A 和组件都在同一个 VLAN、以太网中。
组件将处理后的消息发送到端点 B 的时间。端点 B 也在通过以太网连接的同一 VLAN 中。
组件从端点 B 接收 ACK 的时间。
组件向源 A 发送 ACK 的时间。
以上是对组件职责的描述。从部署的角度来看,我计划在一台 8 核机器上生成 100 个这些组件。没有其他东西可以在机器上运行。端点 B 和源 A 都在不同的机器上,并且一切都在同一个以太网中。我的问题是,上述生成大量组件的模型是否会花费大部分时间等待网络 IO 导致上下文颠簸?如果是,为什么?
c++ - 跟踪多线程中对数据的引用(多少/谁)
我在多线程中遇到了一个问题,多线程模型是 1 Producer - N Consumer。
Producer 生成数据(每个字符数据大约 200 字节),将其放入固定大小的缓存中(即 2Mil)。数据与所有线程无关。它应用过滤器(已配置)并确定没有线程符合生成的数据。
生产者将指向数据的指针推送到合格线程的队列中(仅指向数据的指针以避免数据复制)。线程将 deque 并通过 TCP/IP 将其发送给它们的客户端。
问题:由于只有指向数据的指针提供给多个线程,当缓存变满时,Produces 想要删除第一项(旧项)。任何线程仍然引用数据的可能性。
可行的方式:使用原子粒度,当生产者确定符合条件的线程数时,它可以更新计数器和线程ID列表。
查切大师
当生产者删除它检查计数器的元素时,它大于 0,它会发送动作以释放对 m_in_use_threads 集中线程的引用。
问题
- 如果主缓存中有 2Mil 记录,则 InUseCounter 的数量将相等,因此 Mutex 变量,是否建议在单个进程中拥有 2Mil 互斥变量。
- 拥有大的单一数据结构来维护 InUseCounter 将导致更多的锁定时间来查找和减少
- 什么是我查找引用的最佳替代方法,以及谁拥有这些引用并且锁定时间非常短。
提前感谢您的建议。
operating-system - 我们如何减少上下文切换时间
我们都知道上下文切换时间是纯粹的开销并且没有用。但我想知道如何减少上下文切换时间。使用更多寄存器是否有助于我们这样做?
process - 没有上下文切换的系统调用?
当我遇到这个时,我正在阅读 linux 在我的操作系统手册中的工作原理。
[...] 内核被创建为一个单一的、单一的二进制文件。主要原因是为了提高性能。因为所有内核代码和数据结构都保存在单个地址空间中,所以当进程调用操作系统函数或传递硬件中断时,不需要上下文切换。
这对我来说听起来很神奇,它肯定必须在运行到内核模式来处理中断之前存储进程的上下文。但是好的,我现在就买它。在几页上,在描述进程的调度上下文时,它说:
进程执行时发生的系统调用和中断都将使用此堆栈。
“这个堆栈”是内核存储进程寄存器等的地方。
这不是与第一句话直接矛盾吗?我是否以某种方式误解了它?
windows - Windows - 发生上下文切换时线程ID更改
当上下文切换(由于任何原因)发生时,线程 ID 是否会改变?