草庐IT

GLib-GObject-CRITICAL

全部标签

c++ - GObject 与 C++ : What benefits does GObj offer, 以及它在速度/大小方面的比较如何?

它为面向对象的语言(如C++)提供了什么?还是没有它就不能使用GTK+?假设两个示例使用相同的编译器,就可执行文件的大小和速度而言,对象的GObject实现是否具有与C++相似的质量?或者是否有一些权衡取舍GObject会因为它提供的额外功能而变慢? 最佳答案 GObject(有点像Windows世界中的COM)是一种CAPI,设计时考虑了跨语言互操作性。这意味着您可以在任何支持调用C函数的语言中使用GObjects,但这使得用非C语言编写真正可从任何语言重用的GObjects变得非常困难(如果例如,你用Python编写了一个GOb

c++ - 破坏 Glib::RefPtr 会导致 GTK 3 核心中的断言失败

来自Gtkmm的人是comparingGlib::RefPtr与std::auto_ptr:Glib::RefPtrisasmartpointer.Specifically,itisareference-countingsmartpointer.Youmightbefamiliarwithstd::auto_ptr,whichisalsoasmartpointer,butGlib::RefPtrismuchsimpler,andmoreuseful.但是由于某些奇怪的原因,我无法使用RefPtr完成我的工作。.相同的代码适用于auto_ptr.在下面的代码中,SmartPtr只是这两个

c++ - 为什么 std::mutex 比 CRITICAL_SECTION 慢两倍

std::mutex是用关键部分实现的,这就是为什么它比OSMutex(在Windows上)快得多。但是它不如WindowsCRITICAL_SECTION快。计时只是一个线程中的一个紧密循环:423.76nsATLCMutex41.74nsstd::mutex16.61nswin32CriticalSection我的问题是std::mutex还做了什么?我查看了来源,但无法理解。然而,在它服从CritSec之前还有额外的步骤。我的问题是:这些额外的步骤是否有用?也就是说,额外的步骤是什么?使用CRITICAL_SECTION我会错过什么?还有,如果它不是用Mutex实现的,为什么他们

c++ - 我可以创建多少个 CRITICAL_SECTION?

我可以初始化和使用的关键部分的数量是否有限制?我的应用程序创建了许多(几千个)需要线程安全的对象。如果我在每个部分中都有一个关键部分,那会占用太多资源吗?我认为因为我需要声明我自己的CRITICAL_SECTION对象,所以我不会像使用Win32Mutex或Event那样浪费内核资源?但我只是有一个挥之不去的疑问...?老实说,并不是所有这些对象都需要对我的应用程序来说是线程安全的,但关键部分位于库中的某个低级基类中,我确实需要一个几千个!我可能有机会修改这个库,所以我想知道是否有任何方法可以延迟创建(然后从那时起使用)临界区,只有当我检测到对象正在从不同的线程使用到它是在哪一个创建的

c++ - 为什么 Glibmm/Gtkmm 不包括 Glib::RefPtr 的一元取消引用运算符 *?

Glib::RefPtr允许通过“->”取消引用,但不允许通过“*”取消引用。这是为什么?我当然可以:classFoo{};Glib::RefPtrfooPtr;fooPtr.operator->();文档特别提到他们将operator*()排除在外。但他们没有就原因提供任何指导。为了清楚起见,使用示例进行了编辑:我看到它争论说“你永远不需要取消引用”一个RefPtr,但IMO看起来假违反直觉希望与动态分配对象和堆栈分配对象一起使用的函数需要最小公分母接口(interface),即按引用传递。以下面的例子为例:structFoo{voidprint(){printf("Success"

python - Windows XP GTK 应用程序 Glib 导入错误

我正尝试在WindowsXP上运行我的GTK应用程序,但我在导入时遇到了问题。我已根据需要和推荐安装了以下内容:python-2.6.msigtk2-runtime.2-16.6.exepycairo-1.8.6.exepygobject-2.20.0pygtk-2.16.0.exepyserial-2.5.exe但是,我在运行脚本时遇到以下错误:Traceback(mostrecentcalllast):File"C:\python26\app\src\start.py",line22,inimportgtkFile"C:\Python26\Lib\site-packages\gtk

windows - 如何在 Microsoft Visual Studio 2010 上配置 Glib?

我正在尝试将一个为在Linux上工作而编写的C项目移植到Windows。这是一个依赖CUDA和Glib库的简单项目。我认为最好的方法是使用MicrosoftVisualStudio2010进行编译,但我不知道如何将Glib链接到该项目。CUDA代码运行良好,但每次调用Glib方法都会产生“未解析的外部符号”错误。 最佳答案 我刚刚使用本指南在VisualStudio2008上配置GTK解决了我的问题:http://www.etechplanet.com/blog/visual-studio-2008-configuration-fo

c++ - 为什么 CRITICAL_SECTION 的 OwningThread 成员是 HANDLE 类型,当它表示线程 ID 时?

我正在尝试为CRITICAL_SECTION解锁代码添加一些调试检查,我尝试了以下操作:...if(m_pCritSect){ASSERT(m_pCritSect->OwningThread==GetCurrentThreadId());LeaveCriticalSection(m_pCritSect);}}通过调试CRITICAL_SECTIONS(使用VS2005,主要在WindowsXP上)我“知道”OwningThread的值(RTL_CRITICAL_SECTION结构的成员winnt中定义.h)是持有锁的线程的第ID的值。然而,线程ID由DWORD(unsignedlong

windows - 如何在 MinGW 中编译和使用 GLib

我想使用GnomeGLib在Windows环境中使用免费的MinGW编译器在C中进行开发。问题是,我完全不知道如何编译这个库。你们中的任何人都可以解释一下完成此操作需要哪些工具以及需要遵循哪些说明? 最佳答案 GLib可以为Windows预编译并且已经使用了很长时间:http://www.gtk.org/download/windows.php. 关于windows-如何在MinGW中编译和使用GLib,我们在StackOverflow上找到一个类似的问题:

ios - 如何为 iOS 构建 GLib

我想在我的iOS应用程序中使用lasem,但是编译lasem需要glib。如何构建?我从https://git.gnome.org/browse/glib/refs/tags下载glib-2.37.4.然后我使用autogen.sh获取配置文件,运行make并安装在mac上。我写了一个shell脚本,尝试为iOS构建glib,如下所示:exportpath=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/:$pathexportCC