相关疑难解决方法(0)

防止linux线程被调度程序中断

你如何告诉linux中的线程调度程序不会因任何原因中断你的线程?我在用户模式下编程.简单地锁定互斥锁是否可以实现这一点?我希望防止在执行某个函数时调度进程中的其他线程.它们会阻塞,我会浪费带有上下文切换的cpu周期.我希望执行该函数的任何线程能够在不中断的情况下完成执行,即使超出了线程的时间片.

linux multithreading interrupt

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

我可以阻止Linux用户空间pthread在关键代码中产生吗?

我正在使用2.6.24.3内核为嵌入式Linux项目开发用户空间应用程序.我的应用程序通过创建2个pthread来在两个文件节点之间传递数据,每个pthread都会休眠,直到异步IO操作完成,此时它会唤醒并运行完成处理程序.

完成处理程序需要跟踪待处理的传输数量,并维护一个线程将添加到的一些链接列表,另一个将删除.

// sleep here until events arrive or time out expires
for(;;) {
    no_of_events = io_getevents(ctx, 1, num_events, events, &timeout);
    // Process each aio event that has completed or thrown an error
    for (i=0; i<no_of_events; i++) {
        // Get pointer to completion handler
        io_complete = (io_callback_t) events[i].data;
        // Get pointer to data object
        iocb = (struct iocb *) events[i].obj;
        // Call completion handler and pass it the data object
        io_complete(ctx, iocb, events[i].res, events[i].res2);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是......

是否有一种简单的方法可以阻止当前活动线程在运行完成处理程序时屈服而不是沿着互斥锁/自旋锁路由?

或者失败,可以配置Linux以防止在保持互斥锁/自旋锁时产生pthread?

linux scheduling pthreads embedded-linux

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