Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <iostream>
- using namespace std;
- int N_value;
- long sum = 0;
- DWORD WINAPI ThreadFunc(LPVOID lpParameter);
- CRITICAL_SECTION cs;
- struct CalcParam
- {
- int ThreadId;
- int Start;
- int Count;
- CalcParam(int id, int s, int c)
- {
- ThreadId = id;
- Start = s;
- Count = c;
- }
- };
- void main()
- {
- cout << "Please, input N:" << endl;
- //cin >> N_value;
- N_value = 10000;
- InitializeCriticalSection(&cs);
- LPDWORD threadOne = 0,
- threadTwo = 0;
- //int ThreadId1 = 1;
- CalcParam p1(1, 0, N_value / 2);
- CalcParam p2(2, N_value / 2, N_value / 2);
- CreateThread(NULL, 0, &ThreadFunc, &p1, 0, threadOne);
- CreateThread(NULL, 0, &ThreadFunc, &p2, 0, threadTwo);
- cin >> N_value;
- DeleteCriticalSection(&cs);
- }
- //long sum1 = 0, sum2 = 0;
- DWORD WINAPI ThreadFunc(LPVOID lpParameter)
- {
- CalcParam cp = *(CalcParam*)((void*)lpParameter);
- //int threadId = *(int*)((void*)lpParameter);
- for(int i = 0; i < cp.Count; i++)
- {
- EnterCriticalSection(&cs);
- sum += cp.Start + i;
- printf("Thread %i, sum is %ld\n", cp.ThreadId, sum);
- //cout << "Thread " << cp.ThreadId << " sum is " << sum << endl;
- LeaveCriticalSection(&cs);
- Sleep(2);
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment