Cherry pick of Windows thread-safety fixes from develop
This commit is contained in:
@@ -25,6 +25,8 @@
|
||||
*/
|
||||
#include "testhdf5.h"
|
||||
|
||||
#if defined(H5_HAVE_THREADSAFE) && !defined(H5_HAVE_WIN_THREADS)
|
||||
|
||||
static void my_errx(int, const char *, ...) H5_ATTR_FORMAT(printf, 2, 3);
|
||||
|
||||
static void
|
||||
@@ -40,8 +42,6 @@ my_errx(int code, const char *fmt, ...)
|
||||
HDexit(code);
|
||||
}
|
||||
|
||||
#if defined(H5_HAVE_THREADSAFE) && !defined(H5_HAVE_WIN_THREADS)
|
||||
|
||||
#if defined(H5_HAVE_DARWIN)
|
||||
|
||||
typedef struct _pthread_barrierattr {
|
||||
|
||||
@@ -54,13 +54,13 @@ void *tts_attr_vlen_thread(void *);
|
||||
void
|
||||
tts_attr_vlen(void)
|
||||
{
|
||||
pthread_t threads[NUM_THREADS] = {0}; /* Thread declaration */
|
||||
H5TS_thread_t threads[NUM_THREADS] = {0}; /* Thread declaration */
|
||||
hid_t fid = H5I_INVALID_HID; /* File ID */
|
||||
hid_t gid = H5I_INVALID_HID; /* Group ID */
|
||||
hid_t atid = H5I_INVALID_HID; /* Datatype ID for attribute */
|
||||
hid_t asid = H5I_INVALID_HID; /* Dataspace ID for attribute */
|
||||
hid_t aid = H5I_INVALID_HID; /* The attribute ID */
|
||||
char *string_attr = "2.0"; /* The attribute data */
|
||||
const char *string_attr = "2.0"; /* The attribute data */
|
||||
int ret; /* Return value */
|
||||
int i; /* Local index variable */
|
||||
|
||||
@@ -106,26 +106,27 @@ tts_attr_vlen(void)
|
||||
CHECK(ret, H5I_INVALID_HID, "H5Tclose");
|
||||
|
||||
/* Start multiple threads and execute tts_attr_vlen_thread() for each thread */
|
||||
for(i = 0; i < NUM_THREADS; i++)
|
||||
pthread_create(&threads[i], NULL, tts_attr_vlen_thread, NULL);
|
||||
for(i = 0; i < NUM_THREADS; i++) {
|
||||
threads[i] = H5TS_create_thread(tts_attr_vlen_thread, NULL, NULL);
|
||||
}
|
||||
|
||||
/* Wait for the threads to end */
|
||||
for(i = 0; i < NUM_THREADS; i++)
|
||||
pthread_join(threads[i], NULL);
|
||||
H5TS_wait_for_thread(threads[i]);
|
||||
|
||||
} /* end tts_attr_vlen() */
|
||||
|
||||
/* Start execution for each thread */
|
||||
void *
|
||||
tts_attr_vlen_thread(void *client_data)
|
||||
tts_attr_vlen_thread(void H5_ATTR_UNUSED *client_data)
|
||||
{
|
||||
hid_t fid = H5I_INVALID_HID; /* File ID */
|
||||
hid_t gid = H5I_INVALID_HID; /* Group ID */
|
||||
hid_t aid = H5I_INVALID_HID; /* Attribute ID */
|
||||
hid_t atid = H5I_INVALID_HID; /* Datatype ID for the attribute */
|
||||
char *string_attr_check; /* The attribute data being read */
|
||||
char *string_attr = "2.0"; /* The expected attribute data */
|
||||
herr_t ret; /* Return value */
|
||||
hid_t fid = H5I_INVALID_HID; /* File ID */
|
||||
hid_t gid = H5I_INVALID_HID; /* Group ID */
|
||||
hid_t aid = H5I_INVALID_HID; /* Attribute ID */
|
||||
hid_t atid = H5I_INVALID_HID; /* Datatype ID for the attribute */
|
||||
char *string_attr_check; /* The attribute data being read */
|
||||
const char *string_attr = "2.0"; /* The expected attribute data */
|
||||
herr_t ret; /* Return value */
|
||||
|
||||
/* Open the test file */
|
||||
fid = H5Fopen(FILENAME, H5F_ACC_RDONLY, H5P_DEFAULT);
|
||||
|
||||
Reference in New Issue
Block a user