Guest User

Untitled

a guest
Jan 16th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. -----------
  2.  
  3. // The code below is located the dynamically loaded DLL.
  4. /* Global variable. */
  5. int *p;
  6. #pragma omp threadprivate(p)
  7.  
  8. extern "C" __declspec(dllexport) int MyFunc1(void)
  9. {
  10. int i;
  11. #pragma omp parallel for
  12. for (i = 0; i < n; i++) {
  13. MyFunc2(i);
  14. }
  15. return TRUE;
  16. }
  17.  
  18. void MyFunc2(void)
  19. {
  20. p = malloc(sizeof(int));
  21. *p = 0;
  22. printf(“value = %d”,*p);
  23. free(p);
  24. }
  25.  
  26. -----------
  27.  
  28. DWORD dwTlsIdx;
  29.  
  30. extern "C" __declspec(dllexport) int MyFunc1(void)
  31. {
  32. int i;
  33. #pragma omp parallel for
  34. for (i = 0; i < n; i++) {
  35. MyFunc2(i);
  36. }
  37. return TRUE;
  38. }
  39.  
  40. void MyFunc2(void)
  41. {
  42. int **pp = (int **)TlsGetValue(dwTlsIdx);
  43. *pp = malloc(sizeof(int));
  44. **pp = 0;
  45. printf(“value = %d”,**pp);
  46. free(*pp);
  47. }
  48.  
  49. void MyFunc2(void)
  50. {
  51. int **pp = (int **)TlsGetValue(dwTlsIdx);
  52. if (pp == NULL)
  53. {
  54. pp = malloc(sizeof(int *));
  55. TlsSetValue(dwTlsIdx, pp);
  56. }
  57. *pp = malloc(sizeof(int));
  58. **pp = 0;
  59. printf(“value = %d”,**pp);
  60. free(*pp);
  61. }
  62.  
  63. DWORD WINAPI TlsAlloc(void);
Add Comment
Please, Sign In to add comment