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