Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -----------
- // The code below is located the dynamically loaded DLL.
- /* Global variable. */
- int *p;
- #pragma omp threadprivate(p)
- extern "C" __declspec(dllexport) int MyFunc1(void)
- {
- int i;
- #pragma omp parallel for
- for (i = 0; i < n; i++) {
- MyFunc2(i);
- }
- return TRUE;
- }
- void MyFunc2(void)
- {
- p = malloc(sizeof(int));
- *p = 0;
- printf(“value = %d”,*p);
- free(p);
- }
- -----------
- DWORD dwTlsIdx;
- extern "C" __declspec(dllexport) int MyFunc1(void)
- {
- int i;
- #pragma omp parallel for
- for (i = 0; i < n; i++) {
- MyFunc2(i);
- }
- return TRUE;
- }
- void MyFunc2(void)
- {
- int **pp = (int **)TlsGetValue(dwTlsIdx);
- *pp = malloc(sizeof(int));
- **pp = 0;
- printf(“value = %d”,**pp);
- free(*pp);
- }
- void MyFunc2(void)
- {
- int **pp = (int **)TlsGetValue(dwTlsIdx);
- if (pp == NULL)
- {
- pp = malloc(sizeof(int *));
- TlsSetValue(dwTlsIdx, pp);
- }
- *pp = malloc(sizeof(int));
- **pp = 0;
- printf(“value = %d”,**pp);
- free(*pp);
- }
- DWORD WINAPI TlsAlloc(void);
Add Comment
Please, Sign In to add comment