Alb*_*ore 5 c multithreading pthreads blocking
假设我有一个类似这样的话题:
void my_thread(char *device_name) {
int fd = open(device_name, O_RDONLY);
struct input_event ev;
while(1) {
read(fd, &ev, sizeof(struct input_event));
/* do something */
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么停止这样的线程?一种方法是使用pthread_cancel,但我宁愿更优雅地做.还是喜欢pthread_kill什么?但是,在这种情况下,read方法是否会阻塞(正如我所假设的那样)以及线程如何处理信号?或者是应该处理它的过程?
我非常感谢你的建议!
答案是不要做任何会在没有超时的情况下阻止的事情.对于IO,在知道调用不会阻塞之前,不应调用read().例如,首先在路径上使用poll()或select()以确定状态.