小编Sur*_*uri的帖子

如何设置在C/c ++中获取互斥锁的优先级

我有3个进程(相同的优先级)

  1. P1
  2. P2
  3. P3(定时器)

获取互斥锁的优先级如下: P1(1 priority), P2(2 priority), P3(timer)(3 priority)

如果假设p3来了并获得互斥量然后p2在p1到来之后等待互斥量并且它还等待互斥量

如果p3释放互斥,那么p1应该得到互斥锁p2.

如何在C或C++中执行此操作.

注意:所有进程都在具有相同优先级的线程内运行.

操作系统 - Windows XP

c c++ windows mutex multiprocessing

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

我可以使用memcmp两个比较多字节字符串吗?

我正在尝试编写代码来比较两个字符串.在Windows中我可以使用strcmp,但我想写多字节字符串,以便它兼容所有其他平台我可以使用memcmp吗?如果没有,那么我可以使用任何其他API,或者我需要编写自己的API.

c++ string multibyte memcmp

6
推荐指数
2
解决办法
1377
查看次数

如何在MFC的按钮上同时显示图标和文字?

使用的代码:

m_pButton->Create(L"ABC", WS_CHILD | WS_VISIBLE| BM_SETIMAGE,CRect(0,0,100,100),this,ID_BUTTON1);

m_pButton->SetIcon(::LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON1)));
Run Code Online (Sandbox Code Playgroud)

//上面的代码既不显示图像也不显示文本。

c++ mfc

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

如果需要调用copy_to_user,如何使用自旋锁?

我写了一个小驱动程序来读取一些数据并将其提供给用户.我的驱动程序可以被多个应用程序使用,即它是一个可重入的驱动程序,因此使用自旋锁.但是我发现copy_to_user不应该用旋转锁来调用它.char_device_buf在以下代码中是共享数据; 我必须保护它.除了使用自旋锁和使用互斥锁之外,还有其他机制copy_to_user吗?

static ssize_t char_dev_read(struct file *file,
                                char *buf,
                                size_t lbuf,
                                loff_t *ppos)
    {
            int maxbytes; /* number of bytes from ppos to MAX_LENGTH */
            int bytes_to_do; /* number of bytes to read */
            int nbytes; /* number of bytes actually read */

            maxbytes = MAX_LENGTH - *ppos;

            if( maxbytes > lbuf ) bytes_to_do = lbuf;
            else bytes_to_do = maxbytes;

            if( bytes_to_do == 0 ) {
                    printk("Reached end of device\n");
                    return -ENOSPC; /* Causes …
Run Code Online (Sandbox Code Playgroud)

linux locking linux-kernel spinlock

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

如何将concurrentbag转换成列表?

我几乎无法完成任务.由于列表不是我正在使用的线程安全concurrentbag.完成所有任务后,我想将转换concurrentbag为列表.

在MSDN中搜索过但找不到任何可以将concurrentbag转换为c#列表的API.我该怎么做?

注意:我必须转换为列表,这是必要的.

我有其他选项在列表上应用锁,但我想在构建concurrentbag中使用线程安全.

.net c#

5
推荐指数
3
解决办法
8099
查看次数

无法在kernel32.dll中找到过程入口点InitializeConditionVariable

我正在运行生产者消费者问题(使用Windows线程).它成功编译但在运行时显示以下错误

过程入口点InitializeConditionVariable无法位于动态库Kernel32.dll中.

你能分辨出什么是理由吗?

c++ winapi multithreading

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

如何在 mfc 中更改列表控件中的突出显示颜色

如何在 mfc 中更改列表控件中的突出显示颜色。我没有在 clistctrl 中找到任何 api。我已经按照 msdn 中的描述覆盖了 NM_CUSTOMDRAW,但是当我单击列表中的任何项目时,它显示一半蓝色和一半黑色,为什么蓝色会出现?

c++ mfc

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

抽象工厂和建筑商之间的区别?

很抱歉再次询问.我在网上搜索但是无法理解因此我必须放在这里.这就是我自己研究的内容.我从头部设计模式研究.

抽象工厂模式:

根据我研究的差异,建筑师有些人感觉它是一个工厂,但它只创造了一种类型,大部分时间.
所以我可以说上面的图像中的NYStore是构建器,因为它将比萨对象返回给客户端?我对么?请根据以上示例给出您的答案,这可能有助于我学习它.

design-patterns builder abstract-factory

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

unsigned int值没有给出正确的结果

下面的程序应该打印"错误",但它的打印成功.为什么?

#include<iostream>
using namespace std;
int main()
{ 
   unsigned int a;
   a=-10;

   if(a == -10)
        cout << "success" ;
   else
        cout << "error" ;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

基类中的f(int)是否在派生的派生类D中继承了f(double)?

可能重复:
为什么派生类中的重写函数会隐藏基类的其他重载?

基类中的f(int)是否在派生的派生类D中继承?如果是,那么为什么超载在这里不起作用.如果没有那么为什么f(int)不被继承,因为类d是公开派生的.我很迷惑.

    class B {
    public:
        int f(int i) { cout << "f(int): "; return i+1; }
        // ...
    };

    class D : public B {
    public:
        double f(double d) { cout << "f(double): "; return d+1.3; }
        // ...
    };

    int main()
    {
        D* pd = new D;

        cout << pd->f(2) << '\n';
        cout << pd->f(2.3) << '\n';
    }
Run Code Online (Sandbox Code Playgroud)

c++

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