How to change the same DataFrame thought different threads

How to change the same DataFrame thought different threads?

I have a simple example, but I use the same practics for large task, there are errors.
So Would you suggest, the best practics, how to do it?
Here is an example.

function df_add(dfram,d,id)
eigvals(rand(200,200))
@spawn push!(dfram,(d,id))
end

function test(df)
@threads for i in 1:100
df_add(df,i,Threads.threadid())
end
end

df=DataFrame(Z=Int,id=Int)
@time test(df)