I would not say I am convinced that it is fast enough. But in my book, 4-5 times per second is more than enough, it's a train simulator after all, not a sports or combat simulator after all.
I think it all depends on the sort of computer you have, and how clever Windows handles the case. With 4 or 8 cores, one could well do nothing than passing your controller status around, and its not too many bytes, compared to shovelling all these textures around.
I am not familiar with Windows internals, but Unix/Linux had pipes for decades. You write into them as in a file (which means that Lua can do it without tricks) but on the other end, a program reads constantly, and only uses processing time when data arrives. MS-DOS used to fake pipes by reading all the data into a file before starting the program that received the data. But that was something like half a century ago (or a third, more precisely) and I lost interest in such details during that time. All I care about Windows7 these days is that it is near enough to XP to let me continue my work and that it does not crash.<old man icon here>