小编Pau*_*way的帖子

C++线程安全整数

我目前为线程安全整数创建了一个C++类,它只是私有地存储一个整数,并且公共获取一个使用boost :: mutex的set函数,以确保一次只能对整数应用一个变量.

这是最有效的方法,我被告知互斥量是非常耗费资源的吗?该课程使用频繁,非常迅速,因此很可能成为瓶颈......

谷歌C++线程安全整数返回不清楚的视图和oppinions在不同架构上的整数操作的线程安全性.

有人说,在32位拱32位int是安全的,但64对32是不是因为"对齐"还有人说,这是编译器/操作系统特定的(我不怀疑).

我使用Ubuntu 9.10在32台机器上,一些具有双核等线程可以同时在不同核心上在一些情况下执行,并且我使用GCC 4.4的克++编译器.

提前致谢...

请注意: 我标记为"正确"的答案最适合我的问题 - 但是在其他答案中有一些优点,它们都值得一读!

c++ multithreading integer thread-safety

17
推荐指数
2
解决办法
7544
查看次数

使用表示C++中变量名称的字符串访问变量值

如果标题不清楚,我会尽量澄清我的要求:

想象一下,我有一个名为counter的变量,我知道我可以通过以下方式看到它的当前值:

std::cout << counter << std::endl;
Run Code Online (Sandbox Code Playgroud)

但是,假设我有很多变量,我不知道在运行之前我想要查看哪些变量.

有没有人知道我可以通过使用其名称来获取变量值的方法,例如:

std::cout << valueOf("counter") << std::endl;
Run Code Online (Sandbox Code Playgroud)

我觉得能够做到这一点可能会使调试大型复杂项目变得更容易.

在此先感谢您的时间.


更新:所提供的所有答案都是有效且有用的,但重点是C++中不存在反射(并且在阅读建议的链接之后很明显为什么).

c++ variables

9
推荐指数
2
解决办法
2万
查看次数

在 C++ 中部分截断流(fstream 或 ofstream)

我正在尝试使用 fstream 部分截断(或缩短)现有文件。我尝试过写一个 EOF 字符,但这似乎没有任何作用。

任何帮助,将不胜感激...

c++ fstream truncate file ofstream

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

Ruby on Rails:全功能无表格模型

在搜索无表格模型示例后,我遇到了这个代码,这似乎是关于如何创建一个代码的一般共识.

class Item < ActiveRecord::Base
class_inheritable_accessor :columns
  self.columns = []

  def self.column(name, sql_type = nil, default = nil, null = true)
    columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
  end

  def all
    return []
  end

  column :recommendable_type, :string
  #Other columns, validations and relations etc...
end
Run Code Online (Sandbox Code Playgroud)

但是我还希望它能够像模型那样起作用,表示一个对象的集合,这样我就可以做Item.all.

计划是使用文件填充项目,并从文件中提取每个项目的属性.

但是目前如果我做Item.all我会得到一个

Mysql2::Error Table 'test_dev.items' doesn't exist...

错误.

ruby activerecord model ruby-on-rails

4
推荐指数
2
解决办法
3860
查看次数

MySQL在'到期'后删除行

我试图在MySQL数据库中删除过期的条目,在创建或更新名为lastBeat的字段时使用CURRENT_TIME进行更新,并使用以下查询来检查/删除超过20秒的行:

DELETE * FROM `rmachines` WHERE
 `lastBeat` < (NOW() - 20);
Run Code Online (Sandbox Code Playgroud)

我也尝试过CURRENT_TIME而不是NOW()

有2个主循环:

  1. 每秒更新rmachines中的一行

  2. 执行删除查询

如果2快速执行,当时间滚动到下一分钟(即59-60秒)时,它会删除该行,就像它已经过期一样(即使它确实没有!),否则它表现良好.

如果2每秒执行一次这不是那么明显,那么"错误到期"很少发生,但我每秒运行5次以暴露"问题".

我找到了一个解决方案,经过测试并且似乎在相同的情况下工作:

在mysql数据库中删除超过3个月的行的工作

但谁能告诉我为什么我的方法不起作用?

mysql datetime timestamp delete-row sql-delete

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