【发布时间】:2014-03-21 20:06:57
【问题描述】:
当一个进程尝试输出到控制台(使用 printf)时,它是否会受到 I/O 事件的影响,它将被发送到等待队列,因此,短期调度程序开始行动并选择另一个进程来执行cpu时间
上下文切换是否发生在控制台输出事件中?
【问题讨论】:
标签: io operating-system scheduler context-switch
当一个进程尝试输出到控制台(使用 printf)时,它是否会受到 I/O 事件的影响,它将被发送到等待队列,因此,短期调度程序开始行动并选择另一个进程来执行cpu时间
上下文切换是否发生在控制台输出事件中?
【问题讨论】:
标签: io operating-system scheduler context-switch
您需要进行手动同步。您不能假设它是线程安全的。 如果需要,单独的线程不会同时访问流,您需要使用互斥体包装输出。
【讨论】:
当然,如果 I/O 流被另一个正在执行输出的线程锁定,它可能会这样做。
不要使用您所说的“短期调度程序”。控制台流可能会受到互斥体的保护,并在线程请求 I/O 时以“通常”的方式被线程锁定/解锁。
【讨论】: