Comments (10)
It looks right to me. It's the same way we do it in non-sim
from allwpilib.
That is the right way to do it. We usually use a timeout of 0 anyway, which forces a wait for GetData to get called and ran. But I think I tested it last summer and the timeouts work as well.
from allwpilib.
Regardless of that, you are totally throwing away the interrupted flag.
It should be:
public void waitForData(long timeout) {
synchronized (m_dataSem) {
try {
m_dataSem.wait(timeout);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
from allwpilib.
That certainly looks better. What does interrupting ourself do? And when might this situation occur?
from allwpilib.
InterruptedException is a pain in the *** and not many people know how to handle it correctly.
http://www.yegor256.com/2015/10/20/interrupted-exception.html
http://www.ibm.com/developerworks/library/j-jtp05236/
from allwpilib.
Ok. So since wait
takes a long time we should be calling interrupt. But then we want to go back and continue the wait next time around, so what @JLLeitschuh suggested seems appropriate.
from allwpilib.
@PeterMitrano catch
is only called if the current thread is interrupted, ie. the the exception has been thrown.
That bit of code will normally never run.
from allwpilib.
Yes, I'm aware. I'm just thinking through what would happen if an exception was thrown. I'll make a PR for that one line (in both places. java, and sim java).
from allwpilib.
Turns out this same thing exists in a few other places. Should I change those too? Like Preferences.java, CameraServer.java...
from allwpilib.
I'm hitting them as I do the checkstyle refactor
from allwpilib.
Related Issues (20)
- roboRIO Team Number Setter crashes while refreshing status
- Segfault when destroying AprilTag detector
- be able to use InterpolatingDoubleTreeMap.put().put()... inline HOT 9
- Upgrade to PMD 7.1.0 HOT 1
- Remove RuntimeLoader and RuntimeDetector
- C++ command based examples don't all use CommandPtr HOT 3
- Example of LTVUnicycleController with path following
- ElevatorExponentialProfile example HOT 1
- Add usage reporting ID for DataLogManager (and/or DataLog)
- CMake: macOS: glassnt Library Does Not Link HOT 10
- Add abseil-cpp as a 3rd party library HOT 2
- Add Example Command-Based Best-Practices
- Deprecate robotInit() HOT 2
- CommandRobot discussion HOT 1
- DifferentialDrivetrainSimTest doesn't converge (sometimes) because of LTVUnicycleController HOT 1
- Add `Twist2d ChassisSpeeds::ToTwist2d(units::second_t dt) const`
- Use Java StackWalker API instead of custom logic HOT 1
- Refactor default commands to be held by the subsystem (resource) not the scheduler. HOT 1
- `SimHooks.stepTiming()` hangs when called from a callback registered with `SimDeviceSim.registerValueChangedCallback()` if another `SimDeviceSim` has been created HOT 2
- Make usage of `Set` and `...` syntax more consistent HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from allwpilib.