Я новичок в многопоточности. Ниже приводится объяснение сценария многопоточности. Это фрагмент кода того, что я сделал до сих пор.
main()
{
Thread1(function1);
Thread2(function2);
Thread1.start();
Thread2.start();
}
function1()
{
do
{
parameter1=true;
CommonFunction();------>both the thread uses this same function
}while(runFunction1==true);
}
function2()
{
do
{
parameter2=true;
CommonFunction();------>both the thread uses this same function
}while(runFunction2==true);
}
CommonFunction()
{
mutex.WaitOne();
if(parameter1==true)
Function_1_Operation(SharedVariable);---->This function will update SharedVariable.x
if(parameter2==true)
Function_2_Operation(sharedVariable);---->This function will update SharedVariable.y
mutex.Releasemutex();
}
sharedVariable должна быть обновлена сначала функцией thread1, а затем потоком 2 (синхронизировано). Моя цель - бесконечно обновлять значения sharedvariable в паре.
Мне также нужна помощь с тем, где sharedvariable.clear()
после обновления каждой пары, чтобы при следующем запуске можно было использовать новую sharedVariable
Вывод приведенного выше кода настолько случайен. иногда он фиксируется правильно, иногда либо sharedVariable.x
равно 0, либо sharedVariable.y
равно 0, либо оба.
thread.join()
здесь не работает, поскольку оба потока работают бесконечно.
Что будет ли эффективный способ сделать это?