I'd like to answer your questions regarding to threading document:
The THREAD works as a keyword like FOR, WHILE or TRY, you can call it in a testcase or put it in a User Defined keyword.
The THREAD start as soon as it call, it mean after the line 'THREAD ${ThreadName} ${IsDaemon}'
Different threads has different variables scopes.
I don't want to restrict users from naming threads with duplicate names, even though it's generally not advisable due to the potential for overlapping log files and receiving notifications from other threads, leading to strange behaviors. I prefer to give users more freedom and hold them more accountable for the scripts they write. In certain situations, this flexibility could serve their specific purposes. For example, they might want to send notifications to two specific threads instead of broadcasting to all or just one. Therefore, allowing duplicate thread names could be beneficial in these unique scenarios, despite the inherent risks.
*Fixed issues: https://github.com/test-fullautomation/robotframework/issues/48 https://github.com/test-fullautomation/robotframework/issues/45 https://github.com/test-fullautomation/robotframework/issues/43 https://github.com/test-fullautomation/robotframework/issues/42 https://github.com/test-fullautomation/robotframework/issues/41 https://github.com/test-fullautomation/robotframework/issues/50 https://github.com/test-fullautomation/robotframework/issues/46 https://github.com/test-fullautomation/robotframework/issues/49