小编Raj*_*war的帖子

这段代码有什么比boost助推器更快?

目前在我的代码中我有这样的部分

boost::mutex Mymutex

void methodA()
{
   boost::mutex::scoped_lock lock(Mymutex);
   ......
   ......
   ......
}
Run Code Online (Sandbox Code Playgroud)

我读到关键部分比互斥锁更快?所以我正在做这样的事情,我想知道这是否更快.

 boost::recursive_mutex m_guard;
 void methodA()
 {
       // this section is not locked
      {
          boost::lock_guard<boost::recursive_mutex> lock(m_guard);
         // this section is locked
      }
      //This section not locked
 }    
Run Code Online (Sandbox Code Playgroud)

第二种方法更快吗?我主要使用互斥锁的原因是为了防止竞争条件和锁定对方法的访问,以便一个线程一次访问它.还有什么比这更快的吗?我的另一个问题是声明

  boost::lock_guard<boost::recursive_mutex> lock(m_guard);
Run Code Online (Sandbox Code Playgroud)

似乎每次调用methodA()都会在堆栈上创建锁.我正在考虑将lock声明为静态变量,因此每次调用此方法时都不会在堆栈上创建它.在这种情况下,如何将m_guard添加到它.例如

 boost::recursive_mutex SomeClass::m_guard; //This is static 
 boost::lock_guard<boost::recursive_mutex> SomeClass::lock //Suppose this is static
 void SomeClass::methodA()
 {

      {
         //How do i make lock "lock" mguard 

      }

 }    
Run Code Online (Sandbox Code Playgroud)

c++ critical-section boost-mutex

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

清除char数组最佳方案 - memset与否?

在我目前的代码中,我有类似的东西

while(true) //Infinite loop
{
   char buff[60];
   .....
   ....
}
Run Code Online (Sandbox Code Playgroud)

我想知道什么是更好的性能明智.

  1. 在进入无限循环然后使用memset(buff, 0, 60);或之前声明char buff(将包含包含换行符和换行符的字符串)
  2. 保持原样.memset会影响性能吗?

注意:

我的要求是char每次循环重启时我都需要让数组完全干净.

c++ memset

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

比较浮点数 - Google Test Framework

虽然用户@skrebbel在SO上发表了这篇文章,但他表示谷歌测试框架在比较浮动和双打方面做得很好而且快速.所以我编写了下面的代码来检查代码的有效性,显然我似乎在这里遗漏了一些东西,因为我希望在这里输入几乎相等的部分这是我的代码

float left = 0.1234567;
float right= 0.1234566;

const FloatingPoint<float> lhs(left), rhs(right);


if (lhs.AlmostEquals(rhs)) 
{
    std::cout << "EQUAL"; //Shouldnt it have entered here ?
}
Run Code Online (Sandbox Code Playgroud)

任何建议都会受到赞赏.

c++ floating-point floating-accuracy

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

聚合初始化 - 向量和数组

我知道以下语句有效

std::vector<int> a{1,2,4} --->A (Aggregate Initialization)
Run Code Online (Sandbox Code Playgroud)

或以下声明

std::vector<int> a;
a = {1,2,4};                ---->B  Variable already initialized. - Then aggregate initialization is called
Run Code Online (Sandbox Code Playgroud)

但是对于数组

 int c[3]={1,4};  ---->C (1,4,0)
Run Code Online (Sandbox Code Playgroud)

但以下行为是不允许的

int c[3]; 
c = {1,4};   ---->D
Run Code Online (Sandbox Code Playgroud)

现在我的问题是为什么 B 有效而 D 无效?

c++ c++11

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

布局:如何在垂直布局中将一个小部件制作3倍

我在垂直布局中有3个表(A,B和C).这3个的大小策略(水平和垂直)设置为扩展.如何将表格A制作B和C尺寸的3倍,并始终保持该比例.我是通过QT Designer来做到这一点的.

更新:

为了测试布局拉伸方法.我在垂直布局中将四个QlistWidgets添加到具有水平布局的表单中.这是表单的XML

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>formPracticeClass</class>
 <widget class="QMainWindow" name="formPracticeClass">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>847</width>
    <height>661</height>
   </rect>
  </property>
  <property name="sizePolicy">
   <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
    <horstretch>0</horstretch>
    <verstretch>0</verstretch>
   </sizepolicy>
  </property>
  <property name="windowTitle">
   <string>formPractice</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,0,0,0">
      <item>
       <widget class="QListWidget" name="listWidget"/>
      </item>
      <item>
       <widget class="QListWidget" name="listWidget_3"/>
      </item>
      <item>
       <widget class="QListWidget" name="listWidget_2"/>
      </item>
      <item>
       <widget class="QListWidget" name="listWidget_4"/>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources>
  <include location="formpractice.qrc"/>
 </resources>
 <connections/>
</ui> …
Run Code Online (Sandbox Code Playgroud)

layout qt qt-designer

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

是否可以从QModelIndex获取Qpoint

是否可以从QModelIndex获取Qpoint.我想获得一个Qpoint,以便我可以在某一行显示工具提示.

c++ qt

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

是否可以禁用QComboBox中的条目

我目前正在向Qcombobox添加项目

ui.comboBox->addItem("SomeItemA");
ui.comboBox->addItem("SomeItemB");
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法禁用Qcombobox中的项目,使它们无法选择.我正在使用Qt5

c++ qt

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

仅显示tcl列表的最后三项

我目前使用以下方式遍历tcl列表

foreach  i  $listname  {
    puts $i
}
Run Code Online (Sandbox Code Playgroud)

我怎么才能只显示列表的最后三项?在c ++中我会做这样的事情

for( int i = listname.size()-1; i>=0;i--)
{
}
Run Code Online (Sandbox Code Playgroud)

tcl

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

为什么在此 dart 方法中此回调显示为 null

所以我在我的颤振应用程序中有这段代码 - 这里的函数refreshState正在被foo传入 lambda的方法调用。但是在调试过程中它说回调为空。任何想法为什么会发生这种情况,因为我的回调代码没有被执行。

     void refreshState(Function callback)
        {
            if(isAlive) {
                setState(() {
                    if (callback != null) {
                        callback;
                    }
                });
            }
        }
Run Code Online (Sandbox Code Playgroud)

在我的代码中的某一点我正在这样做

 void didPush() {
        foo();
    }

void foo()
    {
        refreshState(() {        //<------------------This lambda is showing up as null in the paramter of refreshState
               isBusy = true;
       });
}
Run Code Online (Sandbox Code Playgroud)

关于为什么这个 lamda 在refreshState函数参数中显示为 null 的任何想法?

dart flutter

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

Postgres with Django - 配置不正确。错误:ImproperlyConfigured:加载 psycopg2 模块时出错:没有名为“psycopg2”的模块

使用在线教程安装和配置 postgres 后。我正在尝试运行命令

python manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误

...
...
File "/Users/raj/Development/mywebsite/virtual/lib/python3.5/site-packages/django/db/backends/postgresql/base.py", line 24, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'
Run Code Online (Sandbox Code Playgroud)

这是在我的settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '..',
        'USER':"...",
        "PASSWORD":"...",
        "HOST":"localhost",
        "PORT":"5432",
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我遇到了这个线程,这表明可能存在导入问题。但是,如果我像这样在终端中导入包,它不会抱怨

>>> import django.db.backends.postgresql_psycopg2
>>> 
Run Code Online (Sandbox Code Playgroud)

关于我在这里可能做错了什么的任何建议?

更新:

以下命令不返回任何内容

pip freeze | grep psycopg2
Run Code Online (Sandbox Code Playgroud)

我也在使用 Django 2.0.4

>>> import django
>>> django.VERSION
(2, 0, 4, 'final', 0)
Run Code Online (Sandbox Code Playgroud)

python django postgresql

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