Я работаю над небольшим примером, и мне немного любопытно использовать критическое сечение в моем примере.
То, что я делаю, у меня есть CStringArray (к которому добавлено 10 элементов). Я хочу скопировать
эти 10 элементов (строка) в другой CStringArray (я делаю это для понимания потоков и критического раздела), я создал 2 потока, Thread1 скопирует первые 5 элементов в другой CStringArray, а Thread2 скопирует остальные. Здесь используются два CStringArray Я знаю, что только 1 поток может получить к нему доступ одновременно. Я хотел знать, как это можно решить с помощью критического раздела или любого другого метода.
void CThreadingEx4Dlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
thread1 = AfxBeginThread((AFX_THREADPROC)MyThreadFunction1,this);
thread2 = AfxBeginThread((AFX_THREADPROC)MyThreadFunction2,this);
}
UINT MyThreadFunction1(LPARAM lparam)
{
CThreadingEx4Dlg* pthis = (CThreadingEx4Dlg*)lparam;
pthis->MyFunction(0,5);
return 0;
}
UINT MyThreadFunction2(LPARAM lparam)
{
CThreadingEx4Dlg* pthis = (CThreadingEx4Dlg*)lparam;
pthis->MyFunction(6,10);
return 0;
}
void CThreadingEx4Dlg::MyFunction(int minCount,int maxCount)
{
for(int i=minCount;i<=maxCount;i++)
{
CString temp;
temp = myArray.GetAt(i);
myShiftArray.Add(temp);
}
}