Да, вы можете сделать это, это будет безопасно
...
пока второй программист не придет и не поймет те же предположения, которые вы сделали. Этот второй (или 3-й, 4-й, 5-й, ...) программист, вероятно, начнет использовать объект небезопасным способом (в потоке создателя). Вызванные проблемы могут быть очень тонкими и их трудно отследить. Только по этой причине и потому, что заманчиво использовать этот объект в нескольких потоках, я бы сделал поток объекта безопасным.
Чтобы уточнить, (спасибо тем, кто оставил комментарии):
Под «безопасным потоком» я подразумеваю программно разработать схему, чтобы избежать проблем с многопоточностью. Я не обязательно имею в виду разработку схемы блокировки вокруг вашего объекта. Вы можете найти способ на вашем языке сделать незаконным (или очень сложным) использование объекта в потоке создателя. Например, ограничение области действия в потоке создателя блоком кода, который создает объект. После создания передайте объект потоку пользователя, убедившись, что поток создателя больше не имеет ссылки на него.
Например, в C ++
void CreateObject()
{
Object* sharedObj = new Object();
PassObjectToUsingThread( sharedObj); // this function would be system dependent
}
Тогда в вашем потоке создания вы больше не имеете доступа к объекту после его создания, ответственность передается потоку использования.