C++ _Mtx#u t变量失败,我如何声明它以避免';t引用null?

C++ _Mtx#u t变量失败,我如何声明它以避免';t引用null?,c++,C++,变量_Mtx_t失败并引用null。我是怎么申报的 为了确保他的所有功能不失效 #include <iostream> #include <stdio.h> #include <thread> #include <conio.h> #include <mutex> #include <signal.h> #include <condition_variable> #define NUM_READERS 6 #d

变量_Mtx_t失败并引用null。我是怎么申报的 为了确保他的所有功能不失效

#include <iostream>
#include <stdio.h>
#include <thread>
#include <conio.h>
#include <mutex>

#include <signal.h>
#include <condition_variable>
#define NUM_READERS 6
#define NUM_READS 5
#define NUM_WRITERS 6
#define NUM_WRITES 5



using namespace std;
_Cnd_t read_phase, write_phase;
int resource_counter = 0;

_Mtx_t counter_mutex = (_Mtx_t)("0x01", "0x02", "0x04", "0x100");
int WaitReaders = 0,Read = 0;
void writer() {

    int i = 0, numReaders = 0;
    for (i = 0; i < NUM_WRITES; i++) {

        _Mtx_trylock(counter_mutex); {
                while (Read != 0) {

                    _Cnd_wait(write_phase, counter_mutex);
                }
                Read = -1;
                numReaders = Read;

            }

            _Mtx_unlock(counter_mutex);

        printf( " writing %u* [readers: %2d]\n", ++resource_counter, numReaders);

        _Mtx_lock(counter_mutex); {
            Read = 0;
            if (WaitReaders > 0)
                _Cnd_broadcast(read_phase);

            else
                _Cnd_signal(write_phase);
        }
        _Mtx_unlock(counter_mutex);
        counter_mutex;

    }
}
void Readers() {

    int i = 0, numReaders = 0;

    for (i = 0; i < NUM_READS; i++) {
        _Mtx_lock(counter_mutex);
            {
                while (resource_counter == 1)
                {
                    _Cnd_wait(read_phase, counter_mutex);

                }
                WaitReaders--;
                numReaders = ++Read;
            }
            _Mtx_unlock(counter_mutex);
        }

        printf( " reading %u  [readers: %2d]\n",  resource_counter, numReaders);

        _Mtx_lock(counter_mutex); {
            Read--;
            if (Read == 0)
                _Cnd_signal(read_phase);
        }
        _Mtx_unlock(counter_mutex);
    }

int main()
{

    int i;

    int readerNum[NUM_READERS];
    int writerNum[NUM_WRITERS];

    thread readerThreadIDs[NUM_READERS];
    thread writerThreadIDs[NUM_WRITERS];


    for (i = 0; i < NUM_READERS; i++) {
        readerNum[i] = i;
        readerThreadIDs[i] = thread(Readers);
        writerNum[i] = i;
        writerThreadIDs[i] = thread(writer);

    }


    for (i = 0; i < NUM_READERS; i++) {
        readerThreadIDs[i].join();
        writerThreadIDs[i].join();

    }

    return 0;
}

\u Cnd\t
<代码>\u Mtx\u t?这些是C++实现的内部类型,它们不打算由您使用。 您应该使用
std::mutex
std::condition\u变量
。在你的C++书籍中查一下。