1) Должно работать максимально быстро, по идее.
2) Да, нужно использовать, почитайте что-нибудь про примитивы синхронизации, как работают и как используются в классических задачах.
Очень грубо говоря, второй процесс должен висеть на семафоре, захваченном первым, пока тот пишет данные в SM. После этого уже первый процесс должен висеть на семафоре, захваченном вторым, пока второй поток данные не считает.
3) А зачем вообще ему знать, что там второй поток делает? Считал данные, и сразу начал делать вычисления.