Is it possible to use the second core as a new thread?

When I start a thread on the second core with:

second_thread = _thread.start_new_thread(core1_thread, ())

(I’m not posting the full code so no one else accidentally runs it. You can imagine the rest of the simple code with two loops, print statement and sleep.)

it runs one loop in each core and then hangs the board so hard it needs to be nuked and reflashed completely.

Is there a safe way to start a second thread?

OK, I answered my own question.

It turns out that print() is not thread safe.

Locking around each print() call makes things work.

Next question:

Is it OK for me to use core1 for my own motion-control code?