So from what I can figure the shaking graphics (only characters are shaking, the background tiles are not) comes from the fact that the main thread is rendering the characters while the additional thread is still processing the characters coordinates when they move.
Not entirely. The shaking comes from the fact that things are not in sync (or simply take too much time).
So I have no choice but to include the procedure in the main thread instead.
No, yo still can use threads (and when implemented properly they are able to speed up your engine). However, most games are linear to such extend that using threads makes absolutely no sense at all.
On the other hand (and as a hopefully simple example) imagine that you have need for a longwinded movement calculation for an endboss that you know is upcoming if the player continues onward, then you could calculate some things in advance while the player hasn't reached this endboss yet, and loads it's graphics from disk.
I will find some other use for the additional thread, for example quicksaves without interrupting gameplay. I was thinking I could also use an additional thread for the calculations relating to combat in the game. Then have the main thread render the combat graphics separately but I will have to only process variables that have no impact on the graphics at all. Like how much hp a target loses and what status effects are applied but that so low in computational demands that I'm starting to wonder why have multithreading at all except for quicksaves. Sound effects maybe.
Threads requires syncing and that doesn't play very well with linear advancement of a 2d game that needs direct visualization in order to react (speedy) on game-events.
I really wonder what it is that takes so much time to calculate because that is usually not a problem unless you already have a bottleneck somewhere in there. Mind that a mistake/oversight can be made very easily in game-development. have you timed your calculation and are perhaps able to provide us an average time that is taken by your calculations ?
PS: why do people keep advertising 3th party thread libraries. SDL has it's own threading support and none of the 3th party thread libraries will actually solve TS' problem instead just waste TS' time.