A better answer however would be to ask you to expand a little more. Your second and third questions are 'apples and oranges' in comparison to the first.
MDD is primarily an approach that seeks to model a problem with a language appropriate to that problem. The result is then translated into a working system of some sort (in as automated fashion as possible, although some or all of the translation may be manual). This is often achieved using a code generator, interpreter or a mixture of both.
So 'MDD' doesn't mandate the language you use to model the problem. You could use Petri nets, C++, UML, your own domain language, or many other possibilities. The only 'constraint' is that the resulting model (specific Petri net, UML model, C++ code, etc.) is then translated into your working system.
Therefore, assuming I understand the intent behind your question, I'd perhaps answer as follows:
- Can I develop a multi-threaded server using MDD?
Yes. To be most effective, you should choose a modelling language that provides facilities for concurrency. Petri nets may well therefore be a good basis to model the problem. You then need to find a way to translate the resulting net into a working system. Do that, and you've done MDD :-)
Do you suggest me I should create my multithreaded servers (for instance, for managing a computer game, maybe a poker or a first person shooter) by hand or using convencional techniques? (ie, write tons of C++ lines)