Я знаю, что когда я работаю с сокетами или файлами, я могу установить его для неблокирования и использовать epoll
, например, для создания асинхронного сервера, но я сомневаюсь, что у меня нет файлового дескриптора, такого как происходит с розетками, например, представить запрос в базе данных, как я могу сделать запрос без заблокировать мой поток, и передать функцию обратного вызова, как происходит на Node.jsРеализовать async-функцию в C
, например:
queryDB("select something from mytable", my_callback);
и queryDB немедленно возвращается.
Мое сомнение в том, как я могу сделать эту функцию queryDB с таким поведением.
Если API только блокирует, вы можете запустить другой поток для выполнения вызова. В зависимости от того, что должен сделать обратный вызов, и в каком потоке он должен работать, все может оказаться сложным. – Diego
На самом деле я хотел бы избежать потоков, я хотел бы сделать что-то вроде функции чтения, например, я хотел бы поставить задачу на O.S и после получения ответа epoll. – Alex