1# Programming Questions
2
3This page summarizes a list of questions about writing an application on top of OpenTimer.
4
5---
6
7#### Q: What language does OpenTimer support?
8
9**A:** OpenTimer is written in modern C++ and supports only C++ development.
10
11#### Q: Is OpenTimer thread-safe?
12
13**A:** Yes, OpenTimer is thread-safe. You can create multiple `timer` objects in a program,
14each operating on an unique timing view.
15People have been doing this for multi-mode multi-corner (MMMC) analysis.
16
17```cpp
18ot::Timer timer1;           # create a timer for one corner
19ot::Timer timer2;           # create a timer for another corner
20timer1.read_celllib("corner1.lib");
21timer2.read_verilog("corner2.lib");
22...
23timer1.update_timing();     # update the timer for the first corner
24timer2.update_timing();     # update the timer for the second corner
25```
26
27It is also safe to spawn two threads each on a timer.
28
29```cpp
30std::thread t1([&] () { ot::Timer timer1; });  # thread 1 to operate timer 1
31std::thread t2([&] () { ot::Timer timer2; });  # thread 2 to operate timer 2
32```
33
34
35
36