Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

2015-07-01から1ヶ月間の記事一覧

swiftで使えるAtomic系API (OSX/iOS)

swiftで使えるAtomic系APIがあったので備忘録としてリストアップしておく。 OSX/iOSで確認した。 func OSAtomicAdd32(__theAmount: Int32, __theValue: UnsafeMutablePointer<Int32>) -> Int32 func OSAtomicAdd32Barrier(__theAmount: Int32, __theValue: UnsafeMu</int32>…

pthread_mutex_t と NSLockはどのくらい速度に違いがあるのか

2つのスレッドでウェイトを入れながら、一つの変数に排他アクセスをそれぞれ5000回行ったときの時間です。 MacOSX 10.10.4 MacBook Air (13-inch, Early 2015) @synchronized 0.092384 sec objc_sync_enter 0.090988 sec pthread_mutex_t 0.091280 sec NSLoc…

swiftで構造体またはクラスをArrayにする際に気をつけること(2)

class CPoint :Printable { var x:Int = 0 var y:Int = 0 init() {} var description:String { return "x[\(x)] y[\(y)]" } } struct SPoint :Printable { var x:Int = 0 var y:Int = 0 var description:String { return "x[\(x)] y[\(y)]" } } var v2:[SPoi…

swiftで構造体またはクラスをArrayにする際に気をつけること(1)

swiftでは構造体は値渡し、クラスは参照渡しと言われますが、実際に使ってみて失敗した方が理解が早いです。 以下のサンプルと実行結果を見てみます。 class CPoint :Printable { var x:Int = 0 var y:Int = 0 init() {} var description:String { return "x…

Swiftでビット演算判定

C言語でのビット演算後の判定処理と同じことをSwiftで書く場合、少し工夫がいるので、メモ。 int value1 = (1<<0); int value2 = (1<<0|1<<1); if( value1 & value2 ){ printf( "good!" ); } swiftではifの中身はBoolしか受け付けないのでこう書かなくてはい…

swift3で小数点値フォーマット

C言語での小数点値フォーマット指定をswiftで実現する方法を調べました。 C言語では小数点以下の幅を指定した場合、一つ下の桁が四捨五入されます。 C printf( "%.2f\n", 12.3456 ); // 12.35 printf( "%.2f\n", 12.0 ); // 12.00 swift let num = NSNumber(…

SwiftのEnumでクロージャを使う

スタンフォード大学 Paul Hegarty先生のDeveloping iOS 8 Apps with SwiftでSwiftを勉強していますが、難解なところがあったので、自分でソースを書いてみました。 import Cocoa class MyObject { enum Op { case Function2((Double, Double) -> Double) cas…

C++11のmove()でvectorの所有権を移動すると、元のvectorの要素数は0になる

いまいちC++11のmove()の動作が覚えられないので、動作サンプルを書き溜めて覚えたい。 // 検証環境: OSX 10.10.3 Xcode6.3.2 GNU++11 #include <utility> // move() #include <vector> using namespace std; struct JOB { int reward; }; vector<JOB> get_job(void) { vector<JOB> v_jo</job></job></vector></utility>…

C++11でのcondition_variableを使ったマルチスレッド制御

#include <thread> #include <mutex> #include <queue> #include <unistd.h> // usleep using namespace std; mutex print_mutex; // printf()呼び出し排他用 mutex queue_mutex; // v_queue排他アクセス用 queue<int> v_queue; // データキュー condition_variable ready_cond; // 条件変数 void </int></unistd.h></queue></mutex></thread>…