小编gri*_*rom的帖子

锁定多个互斥锁

我想知道是否可以同时锁定多个互斥锁,例如:

 Mutex1.Lock();
 {
     Mutex2.Lock();
     {
          // Code locked by mutex 1 and 2.
     }
     Mutex2.Unlock();

     // Code locked by mutex 1.
 }
 Mutex1.Unlock();
Run Code Online (Sandbox Code Playgroud)

这对某些情况非常有用.谢谢.

c++ multithreading mutex

15
推荐指数
3
解决办法
1万
查看次数

将16位立体声转换为16位单声道声音

我正在尝试将16位立体声声音从WAVE文件转换为16位单声道声音,但我有些困难.我试图将8位立体声转换为单声道,它的工作效果很好.这是一段代码:

if( bitsPerSample == 8 )
{
    dataSize /= 2;
    openALFormat = AL_FORMAT_MONO8;

    for( SizeType i = 0; i < dataSize; i++ )
    {
        pData[ i ] = static_cast<Uint8>(
                        (   static_cast<Uint16>( pData[ i * 2 ] ) +
                        static_cast<Uint16>( pData[ i * 2 + 1 ] ) ) / 2
        );
    }
Run Code Online (Sandbox Code Playgroud)

但是,现在我试图用16位音频做同样的事情,但我无法让它工作.我只能听到某种奇怪的声音.我试图将"monoSample"设置为"left"(Uint16 monoSample = left;),来自该频道的音频数据效果非常好.正确的渠道.谁能看到我做错了什么?这是代码(pData是一个字节数组):

if( bitsPerSample == 16 )
{
    dataSize /= 2;
    openALFormat = AL_FORMAT_MONO16;

    for( SizeType i = 0; i < dataSize / 2; i++ ) …
Run Code Online (Sandbox Code Playgroud)

c++ audio openal

4
推荐指数
1
解决办法
4459
查看次数

在 C++ 中访问命令行参数

是否可以在不通过 int main(int, char**) 接收命令行参数的情况下获取它们?我不想将参数传递给多个方法,因此全局函数将是完美的。另外,我不想通过全局变量自己存储参数。我正在运行 Windows 和 Linux。

编辑: 示例:

int main()
{
   int argc = GetArgumentCount();
   char ** argv = GetArguments();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑: 可以使用LPTSTR WINAPI GetCommandLine(void); 在win32中。

https://msdn.microsoft.com/en-us/library/ms683156(v=vs.85).aspx

我正在寻找 Linux 中的等效功能。

c++

3
推荐指数
2
解决办法
5750
查看次数

无法命名我的函数CreateWindow

我无法创建自己的名为CreateWindow的函数,因为已经在win32标头中定义了一个函数.只是我甚至不能在我自己的命名空间中这样做.真的是什么问题?

MyNamespace::MyOwnWindowClass * Bit::CreateWindow( )
{
// Code here.
}
Run Code Online (Sandbox Code Playgroud)

获取错误,例如:

Error   5   error C2447: '{' : missing function header (old-style formal list?)
Error   2   error C2039: 'CreateWindowExW' : is not a member of 'MyNamespace'
Run Code Online (Sandbox Code Playgroud)

c++ winapi

1
推荐指数
1
解决办法
326
查看次数

将 int 数组转换为 std::vector&lt;int*&gt;

我正在尝试将整数 C 样式数组“转换”为std::vector<int*>不使用for循环,或者更确切地说是在向量中插入所有数组项的指针。

我目前正在通过执行以下操作来实现这一点:

for (size_t i = 0; i < 5; i++)
{
    vector.push_back(&values[i]);
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过使用std::vector::insert()and来实现std::being/end

c++ std

0
推荐指数
1
解决办法
256
查看次数

标签 统计

c++ ×5

audio ×1

multithreading ×1

mutex ×1

openal ×1

std ×1

winapi ×1