I used gphoto2 circa 5 years ago in order to capture photos from an automated photography rig. The library was great and I was able to control the timing well enough to use with a flash (single flash for multiple cameras)
As another comment has pointed out, the flaw was the firmware on the cameras. Canon 60D and 600D were the two models I was using and they were so lible to freezing (i.e. stop responding on USB or to button presses on the camera) that I had to set up a relay on the tethered power supply to be able to hard reset them from time-to-time. I'm 100% sure libgphoto2 wasn't to blame because I also used a tethered capture tool from Canon on windows and that also suffered from the same symptoms.
Great library though and great maintainers!
I’ve found that libusb has some useful tools for working around this kind of problem. There is a useful CLI tool for resetting individual ports on some hubs (https://github.com/mvp/uhubctl) which makes good use of this feature. May not fix everything but works for most use cases.